我意识到在堆栈溢出之前已经提出了一个确切的问题,只有一个含糊不清的答案:link
所以又来了。
表A:具有可为空的整数列以及索引。 查询:
SELECT *
FROM table
WHERE column IS NULL
LIMIT 10;
是否会使用索引,或者mysql会在找到10个条目之前进行全表扫描?
答案 0 :(得分:7)
我认为这应该会有所帮助:
http://dev.mysql.com/doc/refman/5.0/en/mysql-indexes.html
使用col_name IS NULL进行搜索,如果col_name为,则使用索引 索引。
答案 1 :(得分:4)
确定您的具体情况的唯一方法是在查询中运行“EXPLAIN SELECT”。
这实际上取决于表中NULL的数量与总行数的比较;表统计数据是否已更新等...
答案 2 :(得分:3)
您必须分析查询。通常,它取决于NULLs
与值的相对百分比。如果该整数列中的大多数条目为NULL,则可能会跳过它。
另一方面,如果只有10%(例如)是NULL
,它将(或应该)使用索引。
答案 3 :(得分:0)
有一种简单的方法可以了解它。
您可以执行此命令show index from tablename
,它将返回一些分析结果,其中一个名为NULL。
如果NULL等于YES,则索引包含NULL