用于in和order by子句的MySQL索引

时间:2019-07-20 06:27:57

标签: mysql database indexing database-indexes

我有一个带有列的表

user (id, name, username, company, salary)

这两个查询的最佳索引策略是什么

select * from user where company in ("a", "b") order by salary limit 20

select * from user order by salary limit 20 

2 个答案:

答案 0 :(得分:0)

成为index(company, salary)很高兴。考虑到索引的顺序很重要。

答案 1 :(得分:0)

您可以为第一个查询尝试以下覆盖索引:

CREATE INDEX idx1 ON user (company, salary, name, username);

包含nameusername列以覆盖SELECT *,这需要所有列。

对于第二个查询,您可以尝试:

CREATE INDEX idx2 ON user (salary, company, name, username);