gpt4 book ai didi

sql - MySql 需要很长时间来优化无连接查询

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

我们有一个简单的查询,如下所示:

SELECT a,b,c,d FROM table WHERE a=1 and b IN ('aaa', 'bbb', 'ccc', ...)

根本没有连接,IN 子句中有 5000 个常量值。

现在,此查询需要 1-20 秒才能在非常强大(16 核)的服务器上运行。该表在 (a,b) 上有一个索引,我们还尝试将索引反转为 (b,a)。服务器有大量内存,没有人写入此表 - 只有 5 个进程在运行选择,就像我上面描述的那样。

我们做了一些分析,发现一些查询在“JOIN::optimize”(.\sql_select.cc 977) 中花费了 3.5 秒。我提醒你,查询根本不使用连接。

在无连接表上花费大量时间优化连接的原因可能是什么?

这是 EXPLAIN SELECT 的结果:

id select_type table type   possible_keys key    key_len ref rows   Extra
1 SIMPLE table range IX_A_B IX_A_B 65 \N 5000 Using where

最佳答案

尝试将 5000 个值放入临时表中:

declare @t table (b varchar(10))
insert into b select 'aaa'
union all select 'bbb'
union all select 'c'
....

select table.*
from table
join @t t on table.b = t.b
where table.a = 1

关于sql - MySql 需要很长时间来优化无连接查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2153799/

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