2011-08-18 59 views
0

所以,如果我有一個SQL查詢這樣的:索引鍵和相關的列或只是鍵來提高速度在MySQL

SELECT title, document FROM docs WHERE id = "1" and type = "2" 

SELECT title FROM docs WHERE id = "1" 

SELECT title FROM docs WHERE member = "foo" 

最大限度地提高速度,第一個我。我只需要索引鍵(id和類型一起?分開?)ii。我還需要索引標題和文檔(在一起,分開)

同樣類型的問題適用於第二個問題,對於第三個查詢i。我必須僅索引成員嗎? IM只是想了解mysql檢索和索引。

+1

所有這一切,甚至更多,在http://use-the-index-luke.com/解釋 –

+0

莫大的聯繫。謝謝! – re1man

回答

0

您需要2個指標

(id, type, title) 
(member, title) 
  • id, type使得id冗餘
  • 添加標題,使指數covering
+0

所以我將不得不索引與快速檢索密鑰相關的列? – re1man

+0

嗯。 @gbn:所以如果我得到9列,並有2條件,我需要做一個索引與11列?索引的類型和id的組合將使id索引訪問,而不是類型? –

+0

@Anush Prem:除非WHERE子句匹配聚集索引,否則幾乎是。列順序也很重要id/type是不同的(並且對於僅id搜索更好)來鍵入/ id – gbn

0

1)索引二者ID一起輸入,但不是標題和在其它字文檔

2)的索引ID僅

3)指數構件僅

你必須索引{ID} {ID,類型},{}成員

+0

所以基本上所有被查找的東西都沒有被檢索到。 (WHERE子句) – re1man

+0

{id,type}使{id}冗餘。 –