為什麼我的簡單搜尋查詢太慢?

為什麼我的簡單搜尋查詢太慢?

我不知道為什麼在我的“城市”表中搜尋如此緩慢。我的查詢正在尋找距離城市約 25 公里的「城市」表。我使用這個簡單的查詢,資料庫大約需要 20 秒才能傳回結果。

SELECT city_destination,distance FROM cities WHERE city_start='Wien' AND distance <= 25 ORDER BY distance ASC

表引擎是InnoDB。該表大約有。 700 萬行:

+--------------------+-------------+------+-----+---------+----------------+
| Field              | Type        | Null | Key | Default | Extra          |
+--------------------+-------------+------+-----+---------+----------------+
| id                 | int(11)     | NO   | PRI | NULL    | auto_increment |
| id_of_start        | int(11)     | NO   |     | NULL    |                |
| id_of_destination  | int(11)     | NO   |     | NULL    |                |
| city_start         | text        | NO   |     | NULL    |                |
| city_destination   | text        | NO   |     | NULL    |                |
| distance           | double      | NO   |     | NULL    |                |
+--------------------+-------------+------+-----+---------+----------------+

誰能告訴我如何優化資料庫或查詢?

答案1

對於此查詢,您應該使用 city_start + distance 的索引

CREATE INDEX idx_citie_start_distance ON cities (city_start, distance);

您也可以建立兩個索引:city_start 和另一個用於距離的索引。這應該也能正常運作。

相關內容