i486 Asked: 2024-03-02 22:50:54 +0800 CST2024-03-02 22:50:54 +0800 CST 2024-03-02 22:50:54 +0800 CST NULL 值的索引用法 772 如果某列有索引,如果条件是,是否会加快搜索速度... WHERE column IS NULL?实际上它是 2 列的复合索引,第二列可以为 NULL ( WHERE col1 = X AND col2 IS NULL)。 performance 1 个回答 Voted Best Answer Rick James 2024-03-03T11:55:52+08:002024-03-03T11:55:52+08:00 简短回答:可能。 长答案: IS NULL优化如= constant. (IS NOT NULL才不是。) 优化器可能会避开索引并进行表扫描,从而丢弃不匹配的行,原因有很多。 对于测试列NULL或常量的单列索引,如果超过大约 20% 的表具有该值,优化器通常会忽略该索引。 对于复合索引(并且所有列都经过测试NULL或为常量),优化器可能会使用该索引。 使用EXPLAIN SELECT看看是否有INDEX可能被使用。
简短回答:可能。
长答案:
IS NULL
优化如= constant
. (IS NOT NULL
才不是。)优化器可能会避开索引并进行表扫描,从而丢弃不匹配的行,原因有很多。
对于测试列
NULL
或常量的单列索引,如果超过大约 20% 的表具有该值,优化器通常会忽略该索引。对于复合索引(并且所有列都经过测试
NULL
或为常量),优化器可能会使用该索引。使用
EXPLAIN SELECT
看看是否有INDEX
可能被使用。