データベースに、都市間の距離を含む巨大なテーブルがあります。これにより、開始都市が選択されたときに、私のアプリケーションは世界中の近くの都市を見つけることができます。
次の 4 つの列が含まれます。
ID, StartCityID, EndCityID, Distance
約 1 億 2000 万行が含まれています。
、 、両方に別のインデックスstartcityID
、 、にそれぞれ別のインデックスを設定しました(これはインデックスを実際に扱うのは初めてなので、正しく行っているかどうかは 100% わかりません)。endcityID
startcity + distance
endcity + distance
とにかく-次の2つのクエリを実行します。
Select distinct StartCityID
From Distances where EndCityID = 23485
と
Select distinct EndCityID
From Distances where StartCityID = 20045
どちらも同じ数の をcityID
返しますが、上のものは実行に 35 秒かかり、下のものはすぐに結果を返します。startCity
インデックスを見ると、同じように機能するように設定されているendCity
ようです。
なぜ彼らの行動が違うのか知っている人はいますか?私は途方に暮れています...
注意 - これはより多くの洞察を提供するかもしれませんが、35 秒かかるものです - 同じ ID ですぐにもう一度実行を押すと、その時と同じようにすぐに結果が返されます。
残念ながら、それは私のウェブサイトには十分ではありませんが、役に立つ情報かもしれません.
ありがとう