哪个mySQL日期查询表现更好?

Kem*_*mal 8 mysql performance

我有一个查询,可以用两种不同的方式表达,结果相同.哪一个更好 - 出于性能或其他原因?

第一个查询:

SELECT post_id FROM posts 
    WHERE post_date BETWEEN '2010-01-01 00:00:00' AND '2010-12-31 23:59:59'
Run Code Online (Sandbox Code Playgroud)

第二个查询:

SELECT post_id FROM posts
    WHERE YEAR(post_date)=2010
Run Code Online (Sandbox Code Playgroud)

提前致谢.


建议进行基准测试后,我进行了一些搜索和测试.我的测试不是基准测试,因为我的计算机出现了一些问题,但他们给了我一些想法.

我测试了我的4000划线表并没有重要区别.BETWEEN命令比YEAR(post_date)更多0.01-0.02秒,总查询时间为0.09.似乎使用YEAR(post_date)对性能和可用性都有好处.

我已经了解到搜索时的情况; 如果小时或分钟不是那么重要,BETWEEN可以像这样使用:

SELECT post_id FROM posts 
    WHERE post_date BETWEEN '2010-01-01' AND '2010-12-31'
Run Code Online (Sandbox Code Playgroud)

Pis*_*3.0 11

如果您有一个索引post_date(如果您想经常运行此查询,我建议使用它),那么BETWEEN查询可以使用它.将列放入函数(YEAR(post_date))后,MySQL不再使用列的索引,因此必须遍历所有行(称为a full table scan).

查看EXPLAIN SELECT您的查询输出(查看本教程)并查看您将获得的结果 - 如果有可用的索引,您应该清楚地看到差异.

当然,对您的代码进行基准测试并亲自查看 - 但一般来说,在WHERE中使用函数的速度较慢.