【发布时间】:2019-11-11 11:20:44
【问题描述】:
假设我的数据库中有以下索引:
CREATE INDEX myindex on t2(emp_no, title);
和我的查询:
SELECT
t1.emp_no,
t1.name,
FROM
t1, t2
WHERE t1.emp_no = t2.emp_no and t2.title = 'some value';
有人建议我不要使用该索引进行查询,因为它没用,而且它可能会以某种方式使查询变慢。
但是为什么以及如何这个索引没有用呢?
【问题讨论】:
-
与性能无关,但是:您应该真正开始使用“现代”(近 30 岁)显式
JOIN运算符,而不是古老而脆弱的隐式连接 -
你不能真正“不使用和索引”——查询优化器将决定使用索引是否有意义。并且优化器通常会做对。
-
不看表定义就很难判断。但是,如果您打算过滤
title作为执行的第一步,则将该列放在索引的前面会更好。