MySQL Integer比较速度(= vs <>)

标签 mysql sql optimization integer comparison

我有一个包含“事件”字段的表。 Active 是一个带索引的 tinyint(4),但只包含 1 或 0 的值。我知道……不是很好的设计,但我继承了这个系统来维护。

如果有帮助的话,这张表有 175277 条记录。

当我运行时:

SELECT * FROM table WHERE active = 1;

需要 0.497 秒。

但是当我运行的时候

SELECT * FROM table WHERE active <> 0; 

(active 必须等于 1,因为这是唯一可能的其他值。)

只需要 0.095 秒。

我正在做一些查询优化并注意到了这一点并且想知道为什么?

最佳答案

解决了!

如上所示,我使用 EXPLAIN 查看查询在做什么,结果引擎决定为每个查询使用不同的键。

关于MySQL Integer比较速度(= vs <>),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37127264/

相关文章:

mysql - 使用 DATETIME mysql 查询日期之间的时间范围

php - Laravel 哪里存在查询问题/不工作

javascript - knockout 最佳实践。如果或可见

PHP:while 循环中的 mysql_fetch_array() 耗时太长

mysql - 是否有更简洁的 SQL 查询来将两个值与单个可能性列表进行匹配?

Java 7 排序 "optimisation"

mysql - MYSQL中使用时如何删除最新的

Mysql - 同一个表从另一列复制日期列但减少 3 天

mysql - 在现有列的值中添加字符

sql - 将查询转换为存储过程