0

当我从不同的函数执行两个查询时,我得到了相同的结果。我只是想知道哪个查询经过优化或逻辑正确(请参阅下面的查询 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';
4

1 回答 1

0

这两个都需要您进行表扫描,因为您需要检查该purchase_date行是否会在其中并且不能使用索引。我建议您使用BETWEEN查询,以便您可以使用以下任何索引purchase_date

WHERE sales.purchase_date BETWEEN '2012-06-01' AND '2012-06-30'
于 2012-06-07T11:16:23.910 回答