为提高效率,提问时请提供以下信息,问题描述清晰可优先响应。
【DM版本】:8
【操作系统】:linux/win
【CPU】:
【问题描述】:
最近生产碰到好多这类问题,各个表数据量大约在1500W-3000W之间
sql1:
SELECT ZJZT, COUNT() TOTAL FROM ZJ_ZJB Z WHERE Z.ZJHM >= 'EA1000010000' AND Z.ZJHM <= 'EA1000020000' GROUP BY Z.ZJZT
零点几秒返回结果。
sql2:
SELECT ZJZT, COUNT() TOTAL FROM ZJ_ZJB Z WHERE Z.ZJHM >= 'EA1000010000' AND Z.ZJHM <= 'EA1000020000' AND SYDW = '123456' GROUP BY Z.ZJZT
几十秒返回结果。
sql2使用/*+INDEX(ZJ_ZJB ,ZJHM _IDX) */还是走SYDW索引,
使用FROM ZJ_ZJB INDEX ZJHM _IDX Z 数据库执行会走ZJHM 索引,但是使用mybatis时会报错,
可能是统计信息不准导致,尝试更新一下SYDW的统计信息:
stat 100 on index SYDW的索引名称;
stat 100 on ZJ_ZJB(SYDW)