2011-08-08 107 views
2

如果我在一個有100行的表上使用SELECT DISTINCT查詢,其中98個表的條目是相同的,而另外兩個是相同的,那麼它是否仍然會經過所有100行才返回2不同的結果?使用鍵加速SELECT DISTINCT

有沒有辦法使用索引/鍵等,而不是通過所有100行,而是通過2行?

#### EDIT #####

,所以我說這個指數:

KEY `column` (`column`(1)), 

但後來當我做

EXPLAIN SELECT DISTINCT column FROM tablename 

它仍然說這是經歷所有行而不是僅僅是不同的行

+3

我會更傾向於使用約束來避免所有重複插入 – Phil

+0

爲什麼創建索引時的'(1)'長度?如果您希望僅使用索引解析查詢,則索引需要位於整列上,而不僅僅是第一個字節/字符。 –

+0

我將其更改爲20(列中的任何條目都不超過該條目),並且它仍然遍歷所有條目 –

回答

6

C通過使用DISTINCT查詢正在查詢的列或一組列的索引將加快查詢速度。而不是查看每一行,它將使用索引中的兩個條目。雖然只有100行,但差異甚至可能無法檢測到。

0

我正在做幾乎類似的事情。我正在試圖從400毫米行的表中獲取不同的值。

我甚至有該屬性的關鍵。它仍在進行全面掃描。唯一的區別是它是完整的索引掃描而不是磁盤掃描。

我只有10個不同的值,但我沒有導致即使5分鐘後,我殺了它。