gpt4 book ai didi

mysql - 查询需要很长时间才能执行

转载 作者:行者123 更新时间:2023-11-29 00:10:21 24 4
gpt4 key购买 nike

SELECT DISTINCT items.itemid
FROM billingdata
LEFT OUTER JOIN items
ON items.itemid = billingdata.itemid
WHERE billingdata.encounterid IN (SELECT encounterid
FROM enc
WHERE patientid = 301487
AND date < '2014-08-21'
AND enctype <> 8
AND deleteflag = 0)
ORDER BY billingdata.displayindex;

在此查询中,在 itemid、billingdata.encounterid、patientid 中有索引。

这个查询的执行计划是这样的:它没有在 billingdata 表上显示任何索引。此表中影响的大多数行enc 表的 encounterid 显示在索引中。

第一次大约需要 18 秒。之后需要 1.8 秒。但它也很慢。

有什么解决办法?

最佳答案

我的理解是,当查找 IN 的纯粹存在时,RDBMS 中的运行速度最快。

所以这可能更有效,但 enc 和 billingdata 中 encounterID 的索引会产生很大的不同。

SELECT DISTINCT items.itemid
FROM billingdata
LEFT OUTER JOIN items
ON items.itemid = billingdata.itemid
WHERE exists (SELECT 1
FROM enc
WHERE patientid = 301487
AND date < '2014-08-21'
AND enctype <> 8
AND deleteflag = 0
AND enc.encounterID = billingdata.encounterid)
ORDER BY billingdata.displayindex;

甚至连接可以更快,具体取决于索引..

SELECT DISTINCT items.itemid
FROM billingdata
INNER JOIN enc
ON ENC.EncounterID = BillingData.EncounterID
AND patientid = 301487
AND date < '2014-08-21'
AND enctype <> 8
AND deleteflag = 0
LEFT OUTER JOIN items
ON items.itemid = billingdata.itemid
ORDER BY billingdata.displayindex;

关于mysql - 查询需要很长时间才能执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25435162/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com