あるフィールドでソート操作を実行したい。そのフィールドにインデックスを作成することは有利ですか。例えば:
SELECT * FROM `users` WHERE `age`=33 ORDER BY `name`
このクエリでは、年齢のインデックスを作成すると便利ですが、名前のインデックスを維持した方がよいでしょう。インデックスを作成することでパフォーマンスが向上しますか?また、このORDER BY
操作は他のクエリでも頻繁に必要になります。
上のインデックスname
だけでは、このクエリにあまり役立たない可能性がありますが、上のインデックスは(age, name)
役に立ちます。
完全に正確というわけではありませんが、インデックスを、インデックス内のキーで並べ替えられた行のリストとして考えると役立つことがよくあります(たとえば、age
最初に並べ替えられ、次に並べ替えられname
ます)。サンプルクエリの場合、すべての行はage=33
名前で並べ替えられた複合インデックスから自然に取得されるため、個別の並べ替えを行う必要がありません。の個別のインデックスがname
あると、同じようには役立ちません。