私は、複雑なクエリで ORDER BY を含む MySQL クエリを高速化するために、粘り強く努力してきました。私はいくつかのオプションを使い果たしましたが、かなり近づいてきました。問題のテーブルに疑似逆引きインデックスを実装することが最善の解決策であることがわかりました。
私は基本的にこの投稿のアドバイスをエミュレートしました (公開日の代わりに ID を使用するバリエーション、共同インデックスの使用などを含む): http://www.igvita.com/2007/08/20/pseudo-reverse-indexes-in -mysql/
余分な列を正常に追加し、データを入力し、インデックスを追加しましたが、クエリは
SELECT * FROM products USE INDEX (index_reverse_created);
動作しないようです。インデックス名の代わりにランダムな単語または通常の列を挿入するとエラーがスローされるため、インデックスを正常に検出できることがわかりました。
EXPLAIN SELECT *... を使用してさらに詳しく調べると、次のようになります。
http://i44.tinypic.com/2aes304.png
possible_keys
特異な部分は、と両方とも (NULL) ですkey
。
SHOW INDEX FROM products の結果は次のとおりです。
http://i41.tinypic.com/fvvdl1.png
そして、それは健全な一連の指標のようです。
そして、まったく、私は困惑しています。インデックスがあるように見えますが、実際に使用しようとすると何か問題が発生します。