【发布时间】:2019-12-11 00:46:42
【问题描述】:
如果我有一个示例查询:
Select * from dept_emp where YEAR(from_date) = 2000 AND MONTH(from_date) = 4;
如何在不影响其正确性的情况下重写查询以提高效率,从而避免全表扫描?
【问题讨论】:
如果我有一个示例查询:
Select * from dept_emp where YEAR(from_date) = 2000 AND MONTH(from_date) = 4;
如何在不影响其正确性的情况下重写查询以提高效率,从而避免全表扫描?
【问题讨论】:
这样的事情最好在from_date上使用索引:
SELECT * FROM dept_emp WHERE from_date BETWEEN '2000-04-01' AND '2000-04-30'
【讨论】:
在 where 子句中使用更少的函数。 不使用
Year(from_date) = 2000
您可以直接说明年份。这个月也一样。
对 Where 子句中使用的列使用适当的索引。
【讨论】: