Mysql
為什麼我的簡單搜尋查詢太慢了?
我不知道為什麼在我的“城市”表中搜尋如此緩慢。我的查詢正在尋找距離城市約 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 | | +--------------------+-------------+------+-----+---------+----------------+
誰能告訴我如何優化數據庫或查詢?
對於此查詢,您應該使用 city_start + distance 的索引
CREATE INDEX idx_citie_start_distance ON cities (city_start, distance);
您還可以創建兩個索引:city_start 和另一個用於距離。這也應該可以正常工作。