我新的MySQL,但已經建立了下面的查詢其優化火種類型MySQL查詢
- 查找使用經緯度百分點(表POS)的表附近的用戶。
- 刪除已被評分的用戶(桌面滑動)。
- 將結果連接到用戶表。
例如,找到與ID = 1(簡體經緯度值)用戶近點(95,95)人
SELECT users.id, name, email, gender, birthyear, latlong FROM (
SELECT * FROM (
# Find nearby users.
SELECT * FROM pos
WHERE X(latlong) BETWEEN 90.0 AND 100.0
AND Y(latlong) BETWEEN 90.0 AND 100.0
) AS nearby WHERE owner NOT IN (
# Find users already rated.
SELECT target FROM swipes WHERE owner = 1
) AND id != 1
) AS unratedNearby JOIN users ON unratedNearby.owner = users.id;
這一切工作完美,但我很關心這個查詢的複雜性,以及如何將規模。我有一個SPATIAL KEY 'latlong' ('latlong')
表pos(我知道這是一個尋找附近用戶的次優方式,但準確性在這裏並不重要)。 任何一個用戶都可以有無限次的滑動。
一旦用戶和滑動表開始變得非常大,此查詢是否會開始崩潰?除了空間鍵之外,我還有其他的索引嗎?
您應該提供有關表結構的更多信息,並至少解釋爲什麼下面的答案不符合要求 – RuslanN