[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,直接从 "统计结果" 获取结果。

posted @   jinzesudawei  阅读(1097)  评论(0编辑  收藏  举报
编辑推荐:
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
阅读排行:
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】
点击右上角即可分享
微信分享提示