sql - 如何在 SQL 中使用更好的日期比较来优化此查询?

标签 sql mysql optimization date-comparison

我对这个查询有问题,这个查询的复杂性不好,我使用这个查询很长时间了,现在这个数据库有很多行可以通过这个方法进行选择。所有索引都已正确添加。我搜索了一些其他方法来通过日期比较优化此查询,因为这是此解决方案中的瓶颈。

SELECT (...) FROM table 
WHERE (YEAR(row_add_date) * 10000 + 
       MONTH(row_add_date) * 100 + 
       DAYOFMONTH(row_add_date)) >= (var_0 * 10000 + var_1 * 100 + var_2) and
      (YEAR(row_add_date) * 10000 + 
       MONTH(row_add_date) * 100 + 
       DAYOFMONTH(row_add_date)) <= (var_3 * 10000 + var_4 * 100 + var_5) 

谁能帮帮我? 问候

最佳答案

我建议使用内置的 mysql 日期比较。

row_add_date <= '20101027' and row_add_date >= '20101027'

但请注意,这首先是一个奇怪的测试:不仅仅是测试日期等于 10 月 27 日,就像这样:

row_add_date = '20101027'

关于sql - 如何在 SQL 中使用更好的日期比较来优化此查询?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4034485/

相关文章:

为 6 字节字符串创建更快的完美哈希函数

mysql - 在 IF 语句中选择 2 个或更多值

sql - 通过缝合列来连接表格,无需制作笛卡尔积

mysql - MySQL 过程中的意外 IF

mysql - 添加不需要的比较以获得结果但减少选择是一个好主意吗?

php - 从 textarea 提交时 - mysql 错误

php - MySQL 通过类元数据表查询

javascript - a == 'foo' 和 'foo' == a 在 javascript 中的区别

MySQL性能: many rows and columns (MyISAM)

php - 如何将分解值与用户 session ID 相匹配?