当我从不同的函数执行两个查询时,我得到相同的结果。我只是想知道哪个查询是优化的或逻辑上正确的(参见下面的查询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';
答案 0 :(得分:0)
这两个都要求您进行表扫描,因为您需要检查purchase_date
以查看该行是否存在且无法使用索引。我建议您使用BETWEEN
查询,以便在purchase_date
上使用任何索引:
WHERE sales.purchase_date BETWEEN '2012-06-01' AND '2012-06-30'