2009-10-06 33 views
12

我意識到確切的問題已被問及堆棧溢出之前只有一個模糊的結論性答案:linkmysql 5.0的索引是否爲空值?

所以這裏再次。

表A:有一個可以爲空的整數列和一個索引。 查詢:

SELECT * 
FROM table 
WHERE column IS NULL 
LIMIT 10; 

將一個索引使用,或將在mysql做一個全表掃描,直到它已發現10項?

回答

4

要確切地知道您的具體情況的唯一方法是對您的查詢運行「EXPLAIN SELECT」。

它確實取決於表中NULL的數量與總行數的比較;是否已更新表格統計信息等等......

3

您必須分析查詢。一般來說,它取決於NULLs相對於數值的百分比。如果該整數列中的大多數條目是NULL,那麼它可能會跳過它。

另一方面,如果只有10%(例如)是NULL,它將(或應該)使用該索引。

+1

謝謝主席先生。我只需要對此進行回顧。而且我想補充說,未來的任何人都會在這個頁面上看到你的答案是最好的。 – usumoio 2013-03-18 17:56:22

+0

謝謝。非常高興這是有幫助的。 – 2013-03-20 21:52:19