EXPLAIN
インデックスなしでこのクエリを実行する場合
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
これが出力です
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
テストサーバーでは、インデックスがある場合とない場合の実際の(ステートメントではない)クエリの実行時間は同じです。