[SQL] - 报表查询效率优化

Posted Hello World!

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[SQL] - 报表查询效率优化相关的知识,希望对你有一定的参考价值。

背景

系统将数据对象JSON序列化后存放到数据库字段中。
Report 模块需要获取实时数据对象数值,当前在SQL中进行数值判断的耗时长,效率低。

分析

当前执行效率低主要是程序结构设计的不合理。

SQL瓶颈如下,这里的 wordstr 为统计关键字,7 为 wordstr 的字符串长度。

sum((LEN(@colName) - LEN(REPLACE(@colName, wordstr, ‘‘)))/7)

解决

思路1:使用代码方式重新实现一遍统计功能。
问题:程序结构改动量大,工作量大,暂不采用。

思路2:优化数据结构,缓存统计变量。
2.1 添加 "统计结果" 字段,用于保存每一行记录的统计关键值。
2.2 更新数据表所有 "统计结果" 字段。
2.3 新建触发器,自动更新 Insert, Update 行记录变更。
2.4 更新报表SQL,直接从 "统计结果" 获取结果。







以上是关于[SQL] - 报表查询效率优化的主要内容,如果未能解决你的问题,请参考以下文章

MySQL批量SQL插入性能优化

MySQL批量SQL插入性能优化详解

MySQL批量SQL插入各种性能优化

MySQL批量SQL插入性能优化

SQL 查询优化

MySQL批量SQL插入性能优化