程序问答   发布时间:2022-06-01  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了AWS RDS Aurora - 使用子查询更新表非常慢大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决AWS RDS Aurora - 使用子查询更新表非常慢

开发过程中遇到AWS RDS Aurora - 使用子查询更新表非常慢的问题如何解决?下面主要结合日常开发的经验,给出你关于AWS RDS Aurora - 使用子查询更新表非常慢的解决方法建议,希望对你解决AWS RDS Aurora - 使用子查询更新表非常慢有所启发或帮助;

目前,我有两个表客户和订单。客户表更像是一个报告表,我想在其中插入客户在商店中的第一个和最后一个订单。相关字段是具有索引的电子邮件列,过滤列“商店”也具有索引。所以当我运行以下查询时

update Customer a
set 
a.first_order_ID = (SELEct min(c.order_ID) from orders c
     where store = "somename"
       and c.email = a.email);

Customer 表有 7k 条记录,orders 有 700 万条记录。问题是这个查询需要永远完成。解释查询结果为:

1 - SELEct type: update,type: index,key: priMary,rows 6992,filtered: 100
2 - SELEct type: dependent subquery,type: ref,key: orders_email_store,rows: 3 million

所以我猜这是一个 6992 x 3 百万的操作。如何提高性能?

我找到的唯一解决方案是使用带有循环的存储过程,这使得子查询更快。

我也尝试对更新进行内部联接,但获取最小订单 ID 的条件是我的问题。

有什么建议吗?也许我的 sql 很糟糕。

解决方法

c 需要一个复合 INDEX(store,email,order_id),按这个顺序。

另外,最好使用“多表更新”而不是子查询。

如果您需要进一步讨论,请提供SHOW create table;我们需要验证引擎、数据类型等没有引起问题。

每列的单独索引与复合索引不同。

大佬总结

以上是大佬教程为你收集整理的AWS RDS Aurora - 使用子查询更新表非常慢全部内容,希望文章能够帮你解决AWS RDS Aurora - 使用子查询更新表非常慢所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签:-