1

インデックスがどのように機能するかはよくわかりません。

これが私がそれを理解した方法です、私が間違っているかどうか私を訂正するか、私が正しいかどうかを確認してください:
私は質問を持っています:

SELECT * FROM people WHERE age < 40 AND country = 'United States'

私のインデックスはcountryフィールドにあります。
最初に国を検索し(インデックスがあるため)、結果のリストを作成してから、リストで。を検索しますage < 40。私は正しいですか?

4

1 に答える 1

4

それがDBMSが選択することかもしれません。DBMSはSQLを調べて、いくつかの可能な「実行プラン」を生成し、それらがどれほど「高価」であるかを把握して、最適なものを選択します。確かに、あなたが説明した計画はDMBSが検討する可能性が高いものですが、その計画を選択することが100%保証されているわけではありません。

それは、データがどのように見えるかなど、他の多くの要因に依存します。DBMSは、システムを流れるデータが最小限に抑えられるように、データをできるだけ早くフィルタリングするプランを選択しようとします。DBMSが国が非常に少ないことを確認できる場合='米国'、クエリのその部分を最初に処理することを選択する可能性があります。これにより、その後の操作が安くなります。

詳細については、MYSQL EXPLAINドキュメント)を実行して、DBMSが実行することを選択したことを正確に確認してください。

于 2012-07-03T00:01:21.707 に答える