
fld_date にインデックスを追加することで、「ORDER BY」を改善できますか。
SELECT * FROM t1 WHERE fld1='XXX' fld2='XXX' ORDER BY fld_date;
クエリは、where 句で (fld1、fld2 - 結合インデックス) のインデックスを使用します。ORDER BY はインデックスと正確に一致しないため、fld_date を使用してインデックスを追加すると、ORDER BY fld_date のパフォーマンスの向上に役立ちますか?
答え1
(fld1、fld2、fld_date) にインデックスを追加する必要があります。これは、句で fld1 と fld2 が完全一致に設定されている場合にのみ機能することに注意してください。WHERE
またはなどの完全一致でない表現で<
は、>
順序付けのインデックスがオフになります。
答え2
クラスター化インデックスを調べてください。大規模なデータ セットを使用する場合、パフォーマンスを向上させるために使用できる場合があります。これは、コンピューティング能力が非常に限られていた時代に SQL スタイルの DB で使用されていたもののようです。
出典: 私は、スループットの制限によりデータベース内の実際の値を選択する必要がないようにインデックスを使用すると述べた上級開発者と作業しています。
私が確認したドキュメントによると、それらは単なる「主キー」ですが、以前と同じではありません。そこから不明瞭なパフォーマンス上の利点を得るには、掘り下げる必要があるかもしれません。
追加情報はこちらをご覧ください:順序最適化
参照記事の見出し「ORDER BY 最適化への影響」を参照してください。