我不知道为什么在我的“城市”表中搜索如此缓慢。我的查询正在寻找距离城市约 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 的索引
您还可以创建两个索引:city_start 和另一个用于距离。这也应该可以正常工作。