为什么我的简单搜索查询太慢?

为什么我的简单搜索查询太慢?

我不知道为什么在我的“城市”表中搜索速度这么慢。我的查询是查找距离城市约 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 和 distance。这应该也可以正常工作。

相关内容