このクエリではfilesortを避けるために助けが必要です。このmysqlクエリのfilesortを避ける方法
SELECT id
FROM articles USE INDEX(group)
WHERE type = '4'
AND category = '161'
AND did < '10016'
AND id < '9869788'
ORDER BY id DESC
LIMIT 10
INDEX(群)がfilesortレコードが行われ、そのためORDER BY id DESC
の(type
、category
、did
、id
)
の被覆率です。そのようなクエリのためにfilesortを避ける方法はありますか?
すべての列のデータ型が数値(例:int)ですか?その場合は、クエリ内のすべての数字の周りの引用符を削除します。これは物事を大幅にスピードアップさせます。 – Asaph
@Asaph:暗黙的な変換は大きな問題ではありません。私は一重引用符を削除するので、彼らは間違った印象を与える(列のデータ型が数値であると仮定して) –
@OMG Ponies:本当ですか?この部分のクエリーでさえ、 '<10016 'とid <' 9869788 '?ソートする数字と文字列が異なると考えてください。例えば。 1 <5 <10であるが、 '1' <'10' <'5'である。インデックスを使用することを困難にするか不可能にするか? – Asaph