2010-11-10 55 views
1
EXPLAIN EXTENDED SELECT `member`.`id` , `member`.`name` 
FROM `member` 
WHERE `member`.`last_active` > '1289348406' 

儘管last_active上有一個索引,但顯示以下輸出....應該不是說index而不是where不應該使用索引而不是在哪裏?

id select_type table type possible_keys key key_len ref rows filtered Extra 
1 SIMPLE member range last_active last_active 4 NULL 2 100.00 Using where 

回答

1

Using index意味着查詢不接觸表在所有:

Using index

列信息是從在索引樹中僅使用信息的表中檢索,而不必做一個額外尋求閱讀實際的行。當查詢僅使用屬於單個索引一部分的列時,可以使用此策略。

由於並非所有的字段都被索引覆蓋,所以這是不可能的。

該索引本身當然被使用(因爲訪問類型爲range),但它仍然需要在表中進行行查找以檢索nameid的值。

如果您想查看Using index,請創建一個覆蓋指數(last_active, name, id)

+0

我只在1頁上使用此查詢,但它是一個非常活躍的頁面。對於這樣一個簡單的查詢,這樣做不是個好主意嗎? – Webnet 2010-11-10 00:55:30

+0

@Webnet:做什麼? – Quassnoi 2010-11-10 01:04:34

+0

要索引這些字段,因爲它只會影響此查詢。在這樣的查詢上創建索引是個壞主意嗎? – Webnet 2010-11-12 17:43:50

相關問題