MYSQL 如何优化LEFF JOIN多张表的查询效率

MYSQL 如何优化LEFF JOIN多张表的查询效率,第1张

你这个需求,就是N个表的各自SUM求和,无论用什么语句,从效率上是没法提高的,因为数据运算没法避免。

给你几个参考建议:

左连接是没有必要的,你需要的其实就是不同表各自的sum,应该各自查询就好了

分开语句写,语句更精简

这样的需求,最好使用存储过程和循环语句,在需求上可以更灵活,可以查询任意天数和任意起始日期的数据

当数据量很多(天数积累),并且查询比较频繁的时候,应该引入“中间表”或“临时表”,表中每条记录记录一天的sum值(可以通过存储过程或者定时任务维护),这样再次查询会更有效率。

1、sql语句的执行计划是否正常。

2、减少应用和数据库的交互次数、同一个sql语句的执行次数。

3、数据库实体的碎片的整理(特别是对某些表经常进行insert和delete动作,尤其注意,索引字段为系列字段、自增长字段、时间字段,对于业务比较频繁的系统,最好一个月重建一次)。 4、减少表之间的关联,特别对于批量数据处理,尽量单表查询数据,统一在内存中进行逻辑处理,减少数据库压力(java处理批量数据不可取,尽量用c或者c++ 进行处理,效率大大提升)。

5、对访问频繁的数据,充分利用数据库cache和应用的缓存。

6、数据量比较大的,在设计过程中,为了减少其他表的关联,增加一些冗余字段,提高查询性能。

确实会发生这样的情况,我也有此经历,发生这样的状况是在Oracle数据库下,而查询涉及的一个表的数据量很大,假设为A表,在开始的时候并未带出A的字段,所以查询速度还可以;后来查询带上A表的一个字段,执行很久没有结果。从执行计划中可以看到,增加字段前后查询的执行计划发生变化了,没有带A的字段时,A表有按索引查询,而带A表的字段之后,A表则未按索引查询,而是表扫描,这当然很耗时间了!

经过反复试验都是如此,后来只好改变查询将获取A表的字段放到子查询中执行,才避免了速度变慢。

对应此种情况,我们一般要改变查询语句,或者增加索引,以使查询走索引,这样才不会效率低下。

以上就是关于MYSQL 如何优化LEFF JOIN多张表的查询效率全部的内容,包括:MYSQL 如何优化LEFF JOIN多张表的查询效率、数据库优化可以从哪些方面进行优化、多表关联查询效率就很低,有没有只改SQL的优化方案等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/9463411.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-28
下一篇 2023-04-28

发表评论

登录后才能评论

评论列表(0条)

保存