mysql 5.0索引空值吗?

时间:2009-10-06 23:31:31

标签: mysql null indexing

我意识到在堆栈溢出之前已经提出了一个确切的问题,只有一个含糊不清的答案:link

所以又来了。

表A:具有可为空的整数列以及索引。 查询:

SELECT * 
FROM table 
WHERE column IS NULL 
LIMIT 10;

是否会使用索引,或者mysql会在找到10个条目之前进行全表扫描?

4 个答案:

答案 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

http://dev.mysql.com/doc/refman/5.1/en/show-index.html