3
如果沒有索引運行EXPLAIN時,如果key的字段值不爲空但Extra爲空,那麼是否使用了密鑰?
EXPLAIN SELECT exec_date,
100 * SUM(CASE WHEN cached = 'no' THEN 1 ELSE 0 END)/SUM(1) cached_no,
100 * SUM(CASE WHEN cached != 'no' THEN 1 ELSE 0 END)/SUM(1) cached_yes
FROM requests
GROUP BY exec_date
此運行此EXPLAIN
查詢輸出
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE requests ALL NULL NULL NULL NULL 478619 Using temporary; Using filesort
如果我創建一個索引
ALTER TABLE requests ADD INDEX exec_date(exec_date);
輸出是
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE requests index NULL exec_date 4 NULL 497847
由於Extra
的值爲空,是否表示關鍵字exec_date
未被使用?
在測試服務器上,有和沒有索引的實際(不是EXPLAIN
語句)查詢的執行時間是相同的。
是你的問題,爲什麼它不說'使用索引;'? –
@Asad我的問題是,如果'key'下的值是'exec_date',但是'Extra'下面沒有說'使用索引',這是否意味着密鑰不會被使用? – user784637