【发布时间】:2016-05-10 00:02:00
【问题描述】:
我有一个带有“活动”字段的表格。 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 sql optimization integer comparison