gpt4 book ai didi

mysql - MySql 中严重的 SQL 查询优化问题

转载 作者:行者123 更新时间:2023-11-28 23:57:37 25 4
gpt4 key购买 nike

我在 MySQL 上运行一个非常繁重的查询,这需要几个小时,我很想缩短处理时间。它看起来像这样:

insert into customers_input
select *
from
(
select *
from cust_a a join cut_b b on a.id=b.id
where a.date='2015-01-01' and a.date='2015-01-01'
) a left join
(
select *
from cust_c
) b on a.id=b.id;

cust_a - 有 8,000,000 行,日期列只有两个不同的值,此外 id 列上有一个 BTREE 索引

cust_b - 有 600,000 行,日期列只有两个不同的值, 另外在 id 列上有一个 BTREE 索引

cust_c - 有 20,000 行

我怀疑问题出在连接表 cust_a 和 cust_b 的子查询 (a) 上,原因很简单,因为自从我添加了这个子查询后,处理时间显着增加了。

任何想法或建议将不胜感激。

提前致谢

最佳答案

首先,不要使用子查询。您的查询也可以写成:

select *
from cust_a a join
cust_b b
on a.id = b.id and a.date = b.date
where a.date = '2015-01-01' left join
cust_c c
on a.id = c.id;

此外,

  • 我修正了表名中的拼写错误。
  • 我修正了日期比较中的拼写错误。
  • 我将 bdate 比较移到了 on 子句中。
  • 我为 c 添加了一个别名。

此查询可以从索引中获益:cust_a(date, id)cust_b(id, date)cust_c(id) . (cust_b 索引的列可以采用任意顺序。)

尝试查询并查看它是否及时返回值。然后您可以将 insert 放回去。

关于mysql - MySql 中严重的 SQL 查询优化问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31165013/

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