我使用的是mysql 5.6,我运行了许多基于datetime的查询。
在扫描表中某个日期时间范围内的记录时,您认为下面两个查询之间哪个运行得更快,尤其是在比较值为 string type
? 当然,datetime列是索引的。
答。使用 BETWEEN
```
SELECT user_id
FROM users
WHERE created_at BETWEEN '2018-11-01 00:00:00' AND '2018-11-30 23:59:59'
b。使用 `>=` , `<=` ```
SELECT user_id
FROM users
WHERE created_at >= '2018-11-01 00:00:00' AND '2018-11-30 23:59:59' >= created_at
2条答案
按热度按时间ebdffaop1#
我猜这无关紧要,但是您可以使用mysql的show profile选项对它们进行基准测试。基本用法提供了处理查询时不同状态的持续时间,但是对于不同的资源有更具体的度量。
设置会话的配置文件:
在一个非常大的数据集中运行第一个版本的查询,并使用以下命令检查配置文件:
然后,对另一个查询重复相同的步骤。
我会重复这个过程好几次,并且可以在不同的日子里确保服务器上运行的其他进程不会对结果和最终比较产生太大影响。
这是我做的一个本地测试的一个例子,但只是为了显示你从测试中得到的数据
SHOW PROFILE
. 表很小,我每次只运行一次查询。;)为了
BETWEEN
过滤为了
>= AND <=
过滤mlnl4t2r2#
两个查询都是相同的,完全没有区别。引用sql92规范: