gpt4 book ai didi

sql - 我怎样才能优化这个查询...?

转载 作者:可可西里 更新时间:2023-11-01 08:01:45 25 4
gpt4 key购买 nike

我有两张表,一张用于路线,一张用于机场。

路线包含 9000 多行,我已经为每一列编制了索引。机场只有 2000 行,我还为每一列编制了索引。

当我运行这个查询时,它最多可能需要 35 秒才能返回 300 行:

SELECT routes.* , a1.name as origin_name, a2.name as destination_name FROM routes
LEFT JOIN airports a1 ON a1.IATA = routes.origin
LEFT JOIN airports a2 ON a2.IATA = routes.destination
WHERE routes_build.carrier = "Carrier Name"

用“DESCRIBE”运行它我得到了以下信息,但我不是 100% 确定它告诉我的是什么。

id | Select Type   | Table             | Type   | possible_keys        | Key            | Key_len   | ref    | rows     | Extra
--------------------------------------------------------------------------------------------------------------------------------------
1 | SIMPLE | routes_build | ref | carrier,carrier_2 | carrier | 678 | const | 26 | Using where
--------------------------------------------------------------------------------------------------------------------------------------
1 | SIMPLE | a1 | ALL | NULL | NULL | NULL | NULL | 5389 |
--------------------------------------------------------------------------------------------------------------------------------------
1 | SIMPLE | a2 | ALL | NULL | NULL | NULL | NULL | 5389 |
--------------------------------------------------------------------------------------------------------------------------------------

我能想到的唯一选择是运行两个单独的查询并将它们与 PHP 连接起来,尽管我无法相信这样的事情会杀死 mysql 服务器。所以像往常一样,我怀疑我在做一些愚蠢的事情。 SQL 是我的第一大弱点。

最佳答案

就我个人而言,我会先删除左连接并将其替换为内部连接,因为每条路线都必须有起点和终点。

关于sql - 我怎样才能优化这个查询...?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1049786/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com