MySQL 没有在此查询中使用索引

标签 mysql sql indexing

我有一个包含以下列的表,我为它们创建了索引:

dt 日期tm 时间

现在我试图判断某个时间戳之间是否有任何记录:

explain SELECT count(*) from XX
where dt != CURRENT_DATE 
and tm BETWEEN '14:00:00' AND '14:30:00'

解释显示 key 在这里为 NULL,这是为什么?

如果我用数字零替换第一个时间值,解释短语显示索引正在使用中。

P.S 我只是尝试了更多。如果我用 exists 包装它,索引将再次使用。

最佳答案

尝试创建多列索引。

Create index dt_tm_ix on XX (dt, tm)

关于MySQL 没有在此查询中使用索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21873340/

相关文章:

php - MYSQL - 查找电子邮件中用户的未读消息

mysql - 在 mysql 中使用准备语句插入查询?

mysql - 如何选择具有唯一列值的行并计算计数?

mysql - 查询以获取仅在一个位置或两个位置的 ID

mysql - 使用嵌套选择计算唯一行 - 帮助我优化

mysql - 我应该在 Ruby on Rails 3.0 中索引日期列吗

php - SQL INSERT IGNORE 唯一的值组合

mySQL 唯一值

sql - 使用 SQL Server 从完整路径解析 Html 文件名

arrays - 如何在 PostgreSQL 中获取数组的最后一个元素?