【发布时间】:2017-11-01 09:50:22
【问题描述】:
请帮我优化一下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;
【问题讨论】:
-
您的索引呢?你能发布 EXPLAIN 的输出吗?
-
在解释计划下方找到
-
|编号 |选择类型 |表|类型 |可能的键 |关键 | key_len |参考 |行 |额外的
-
| 1 |初级 | t0 |参考 | UK_PROTOCOL,IDX_PROTOCOL_FACILITY | UK_PROTOCOL | 4 |常量 | 1793 |使用哪里
-
| 3 |依赖子查询 | t5 |参考 | PRIMARY,FK_CT_STUDY_PROTOCOL,IDX_RD_CTS | FK_CT_STUDY_PROTOCOL | 9 | serphydose.t0.ID | 193 |使用索引