gpt4 book ai didi

sql - SELECT 查询很慢(不需要索引),为什么这么慢?

转载 作者:行者123 更新时间:2023-11-29 01:18:59 25 4
gpt4 key购买 nike

我有一个包含超过 100 万个条目的表。

问题在于 SELECT 查询的速度。这个非常快:

SELECT * 
FROM tmp_pages_data
WHERE site_id = 14294

Showing rows 0 - 29 (1,273,042 total, Query took 0.0009 sec)

而且这个很慢:

SELECT * 
FROM tmp_pages_data
WHERE page_status = 0

Showing rows 0 - 29 (15,394 total, Query took 0.3018 sec)

只有 id 列有一个索引,在任何选择中都不需要。所以没有关于 site_id 或页面状态的索引。

0.30 秒的查询非常令人不安,尤其是在有数千个请求的情况下。

那怎么可能呢?我该怎么做才能看到是什么减慢了它的速度?

最佳答案

What can I do to see what's slowing it down?

很明显是什么减慢了速度 - 正如您已经指出的,您在 page_status 列上没有索引,而您应该有一个。

唯一令人惊讶的是,您的第一个查询在没有索引的情况下如此之快。更仔细地观察它,似乎无论您在哪个客户端上运行这些查询,都会添加一个隐式 LIMIT 30 ,您没有在问题中显示。因为匹配的行太多,所以很快就可以找到前 30 行,此时它可以停止搜索并返回结果。但是,您的第二个查询返回的匹配行较少,因此需要更长的时间才能找到它们。添加索引可以解决这个问题并使您的查询几乎是即时的。

简答:在 page_status 列上添加索引。

关于sql - SELECT 查询很慢(不需要索引),为什么这么慢?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4054897/

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