When to use an index?
本问题已经有最佳答案,请猛点这里访问。
我有个问题:
1 2 3 4 5 | SELECT MAX(Sales.Revenue-Sales.Costs), Company.Name FROM Sales INNER JOIN Company ON Company.ID = Sales.ID WHERE Sales.Date <= DATE_SUB(CURRENT_DATE, INTERVAL 1 MONTH); |
我的问题是:我应该在哪里使用索引?为什么?
对于此查询:
1 2 3 4 5 6 | SELECT MAX(s.Revenue - s.Costs), c.Name FROM Sales s INNER JOIN Company c ON c.ID = s.ID WHERE s.Date <= DATE_SUB(CURRENT_DATE, INTERVAL 1 MONTH) GROUP BY c.Name; |
号
最优指标为综合指数(即有多个列):
笔记:
- 我添加了
group by ,所以查询是有意义的。 - 表别名使查询更易于写入和读取。
如果您的sales和company表具有大量数据,则可能需要创建以下索引:
1 2 3 | Sales -> Sales.ID Sales -> Sales.Date Company -> Company.ID |
在join和where子句中使用这些列时,需要这些索引。如果表中有大量记录,则缺少索引将减慢查询速度。