当我使用MySQL获取有关sale.purchase_date的月度数据时,哪个查询已优化?

时间:2012-06-07 11:12:12

标签: mysql query-optimization

当我从不同的函数执行两个查询时,我得到相同的结果。我只是想知道哪个查询是优化的或逻辑上正确的(参见下面的查询1和2)。

我获得了与sale.purchase_date

相关的月度数据

查询1

SELECT sales.purchase_date FROM `sales` 
WHERE sales.purchase_date LIKE  '2012-06-%';

查询2

SELECT sales.purchase_date FROM `sales` 
WHERE MONTH(sales.purchase_date) = '6' AND YEAR(sales.purchase_date) = '2012';

1 个答案:

答案 0 :(得分:0)

这两个都要求您进行表扫描,因为您需要检查purchase_date以查看该行是否存在且无法使用索引。我建议您使用BETWEEN查询,以便在purchase_date上使用任何索引:

WHERE sales.purchase_date BETWEEN '2012-06-01' AND '2012-06-30'