【发布时间】:2016-12-10 11:55:57
【问题描述】:
我有一个名为my_table 的表,其中包含did、uid 和pid 列。
该表的索引是:
-
(uid, did, pid)- 独一无二的 (did)(did, pid)
现在我有一个如下所示的查询:
SELECT * FROM my_table WHERE did=1234
此查询在 ~12 秒内匹配 ~150k 行;但是如果我删除最后一个索引,它会在 ~1sec 内完成
有人可以解释发生了什么吗?
【问题讨论】:
-
听起来像一个边缘案例。请做一个分析表。如果结果仍然很慢发布全表结构和解释结果,并且还指示表中的总行数
-
专业提示:避免使用
SELECT *。而是提供您需要的列的列表。有时查询规划器可以利用该列表来优化您的查询。