📌 CSDN博文标签
#HIS运维 #Oracle19C #SQL慢查询优化 #数据库索引调优 #传染病监测系统 #PB9 #医院数据库运维 #全表扫描优化
摘要
医院HIS传染病监测上报模块中,CRB_SEND监测上报明细表,用于院内传染病病例筛选、上报台账查询、历史数据回溯。该报表采用多条件组合查询逻辑,生产环境长期存在全表扫描问题,业务高峰期页面加载缓慢,偶尔出现查询超时,影响公卫传染病按时上报。本文基于PB9.0+HIS真实生产环境,完整复盘慢SQL根因,采用复合索引+覆盖索引优化方案,零业务代码修改,解决双日期字段OR查询导致的索引失效问题,查询性能提升95%以上。同时附上冗余索引清理、SQL进阶改写两种优化思路,贴合医院HIS运维现场,方案可直接落地,给同行处理同类多条件组合慢查询提供参考。
一、故障背景
1. 业务场景
医院HIS系统中,CRB_SEND为传染病监测上报明细表,支撑全院传染病数据归集、公卫平台上报、院内台账核对等核心业务。前端报表支持多条件联动筛选,核心查询字段如下:
JGID:机构编号(必传等值条件)YWDM:业务编码,传0代表不限制业务ai_type=1:按操作日期CZRQ区间筛选ai_type=2:按发送日期FSRQ区间筛选
2. 性能问题现象
报表查询响应缓慢,查看执行计划为TABLE ACCESS FULL全表扫描,预估消耗 644189,百万级表遍历 IO 开销巨大,高峰期页面超时卡顿。
3. 原表索引现状
表上全部为单列独立索引:IDX