优化存在而不存在

时间:2017-11-01 09:50:23

标签: mysql select exists

请帮我优化Mysql查询

SELECT 
DISTINCT t0.ID, 
t0.CODE_MEANING, 
t0.CODE_SCHEME_DESIGNATOR, 
t0.CODE_SCHEME_VERSION, 
t0.CODE_VALUE, 
t0.MODALITY, 
t0.NAME, 
t0.OBSOLETE, 
t0.FACILITY_KEY
FROM PROTOCOL t0
WHERE EXISTS (
SELECT 1
                FROM CT_STUDY t2, STUDY t1
                WHERE t1.STUDY_DATE <= '2017-09-19 01:23:25.86'
                AND t2.ID = t1.ID
    AND t1.DTYPE = 'CTStudy'
    AND t0.ID = t2.PROTOCOL_KEY
)
AND NOT EXISTS (
SELECT 1
                FROM CT_STUDY t5, STUDY t4
                WHERE t5.PROTOCOL_KEY = t0.ID
    AND t4.STUDY_DATE > '2017-09-19 01:23:25.86'
    AND t5.ID = t4.ID
    AND t4.DTYPE = 'CTStudy'
)
AND t0.FACILITY_KEY = 1;

1 个答案:

答案 0 :(得分:0)

Abi,请不要使用评论为您的问题添加信息。请改用编辑问题按钮。您编辑问题的信息越多,答案就越清晰。

您的数据库中似乎没有任何索引,除了数据库创建的ID和日期的默认索引。

开始尝试,只需为查询中的WHERE后面的所有列添加索引。

对不起,我不能告诉你到底要做什么,我对数据库做得很好,但我不是它的专家。我在你的情况下做的是玩添加不同的索引和阅读手册。