昨夜、mysql で奇妙な問題に直面しました。だから私は4つの列を持つテーブルを持っています( A text, B text, C text , D number)
。D を my として作成しましたindex( B-Tree Mysql Index with innodb engine)
。
テーブルにデータを挿入した後、D の最大値は 100、最小値は 0 であるとします。
フィールド D のクエリ中:
where D = 25
. クエリはすぐに実行されますwhere D = 125
(つまり、値がテーブルに存在しません)。クエリは年齢で実行されます
私が理解しているように、インデックス作成は、この値がテーブルに含まれていることを認識するのに十分スマートであり、他の値として非常に迅速に実行する必要があります。説明クエリ プランを調べたところ、キー「フィールド D」で 50% のテーブル スキャンが表示されました。2 番目のクエリの実行に時間がかかる理由がわかりません。
私のテーブルには約 2,000 万行あります。
PS: 説明のためだけに数字を使用しました。
ありがとうございました