MySQL整数比较速度(= vs <>)
MySQL Integer comparison speed (= vs <>)
我有一个带有字段 "active" 的 table。 Active 是一个带索引的 tinyint(4),但只包含 1 或 0 的值。我知道……不是很好的设计,但我继承了这个系统来维护。
如果有帮助,这个 table 有 175277 条记录。
当我运行:
SELECT * FROM table WHERE active = 1;
需要 0.497 秒。
但是当我 运行
SELECT * FROM table WHERE active <> 0;
(active 必须等于 1,因为这是唯一可能的其他值。)
只需要0.095秒。
我正在做一些查询优化并注意到了这一点并且想知道为什么?
已解决!
如上所述,我使用 EXPLAIN
来查看查询在做什么,结果引擎决定为每个查询使用不同的键。
我有一个带有字段 "active" 的 table。 Active 是一个带索引的 tinyint(4),但只包含 1 或 0 的值。我知道……不是很好的设计,但我继承了这个系统来维护。
如果有帮助,这个 table 有 175277 条记录。
当我运行:
SELECT * FROM table WHERE active = 1;
需要 0.497 秒。
但是当我 运行
SELECT * FROM table WHERE active <> 0;
(active 必须等于 1,因为这是唯一可能的其他值。)
只需要0.095秒。
我正在做一些查询优化并注意到了这一点并且想知道为什么?
已解决!
如上所述,我使用 EXPLAIN
来查看查询在做什么,结果引擎决定为每个查询使用不同的键。