MySQL 有空值的列能用索引吗
MySQL可以用,有相应的优化
https://dev.mysql.com/doc/refman/5.6/en/is-null-optimization.html
MySQL can perform the same optimization on col_name IS NULL that it can use for col_name = constant_value. For example, MySQL can use indexes and ranges to search for NULL with IS NULL.
Examples
-
SELECT * FROM tbl_name WHERE key_col IS NULL;
-
SELECT * FROM tbl_name WHERE key_col <=> NULL;
-
SELECT * FROM tbl_name WHERE key_col=const1 OR key_col=const2 OR key_col IS NULL;
SQL server中不可以
需要建立该列和常量的联合索引(联合索引只要有一个列不为空,Btree节点就会存储索引键值。)