2019独角兽企业重金招聘Python工程师标准>>>

解决方法是情愿多几次访问数据库,增加 Where 条件 缩小检索范围,不要用连接

原代码:

List l = new ArrayList();
StringBuffer sql = new StringBuffer(); sql.append("select log.LOGID,log.LASID,customerinfo.REALNAME,customer.IDTYPE,char(date(log.OPERATEDATE))||' '||char(time(log.OPERATEDATE)),log.OPERATETYPE,");
sql.append("log.OPERATECODE,log.PRINTSTATE,log.FIRSTPRINTDATE,log.LASTPRINTDATE,log.LASTPRINTCODE,");
sql.append("log.EMAILSTATE,log.FIRSTEMAILDATE,log.LASTEMAILDATE,log.LASTEMAILCODE,log.PRINTID,");
sql.append("log.EMAILID,log.FLAG,customer.IDNO,customerinfo.SEX,customer.email,customer.mobile from 日志表 as log, 客户表 as customer, 客户详情表 as customerinfo where log.LASID = char(customer.CUSTOMERID)
and char(customer.CUSTOMERID)= char(customerinfo.CUSTOMERID)");

中 Where  条件 用到了 char() 函数,原来 DB2 中 where 条件中 引用函数会引起全表扫描,逻辑没有什么错,就是线程卡在这里。

修改: 分两部分 先将 顾客ID搜出来,再去搜日志

1.先将 顾客ID搜出来

select customer.CUSTOMERID from 客户表 as customer, 客户详情表 as customerinfo
where customer.CUSTOMERID= customerinfo.CUSTOMERID for read only with ur

2.再去搜日志

StringBuffer sql = new StringBuffer(); sql.append("select log.LOGID,log.LASID,customerinfo.REALNAME,customer.IDTYPE, char(date(log.OPERATEDATE))||' '||char(time(log.OPERATEDATE)),log.OPERATETYPE,");
sql.append("log.OPERATECODE,log.PRINTSTATE,log.FIRSTPRINTDATE,log.LASTPRINTDATE,log.LASTPRINTCODE,");
sql.append("log.EMAILSTATE,log.FIRSTEMAILDATE,log.LASTEMAILDATE,log.LASTEMAILCODE,log.PRINTID,");
sql.append("log.EMAILID,log.FLAG,customer.IDNO,customerinfo.SEX,customer.email,customer.mobile from 日志表 as log, 客户表 as customer,客户详情表 as customerinfo where log.LASID in (");
for(Object CustomerId : CustomerIds){sql.append("'"+CustomerId.toString()+"',");
}
sql.deleteCharAt(sql.lastIndexOf(","));
sql.append(") AND for read only with ur");

记得加上 " for read only with ur "

转载于:https://my.oschina.net/u/2277088/blog/538782

DB2 char()函数引起全表扫描相关推荐

  1. oracle trim 性能,ORACLE sql调优之记录一次trim函数引发的大表全表扫描

    2017年8月14日,一地市oracle相关的调度程序ETL抽取速度奇慢,sql语句每次执行平均时间要9秒左右,如果所示: 该调度过程涉及的sql语句如下: select count(*) from ...

  2. sql语句优化之一:尽量使用索引避免全表扫描

    url:http://lzz7658823.iteye.com/?page=3 1.对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引. 2.应尽量 ...

  3. 内存只有100G,要全表扫描一个200G大表,会不会把内存用完?

    主机内存只有100G,现在要全表扫描一个200G大表,会不会把DB主机的内存用光? 逻辑备份时,可不就是做整库扫描吗?若这样就会把内存吃光,逻辑备份不是早就挂了? 所以大表全表扫描,看起来应该没问题. ...

  4. oracle sql 分区查询语句_oracle11g 表分区后的查询语句如何知道是否进行了全表扫描...

    2019-05-10 回答 1. 对返回的行无任何限定条件,即没有where 子句 2. 未对数据表与任何索引主列相对应的行限定条件 例如:在city-state-zip列创建了三列复合索引,那么仅对 ...

  5. mysql没加引号导致全表扫描_mysql隐蔽的索引规则导致数据全表扫描

    索引是为了加速数据的检索,但是不合理的表结构或适应不当则会起到反作用.我们在项目中就遇到过类似的问题,两个十万级别的数据表,在做连接查询的时候,查询时间达到了7000多秒还没有查出结果. 首先说明,关 ...

  6. MYSQL避免全表扫描__如何查看sql查询是否用到索引(mysql)

    MYSQL避免全表扫描 1.对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引 2.应尽量避免在 where 子句中对字段进行 null 值判断,否 ...

  7. 优化一个奇葩表设计上的全表扫描SQL

    之前在一个比较繁忙的系统抓到的耗时长.消耗CPU多的一条SQL,如下: SELECT * FROM Z_VISU_DATA_ALARM_LOG T WHERE TO_DATE(T.T_TIMESTR, ...

  8. 记录一次没有收集直方图优化器选择全表扫描导致CPU耗尽

    场景:数据库升级第二天,操作系统CPU使用率接近100%. 查看ash报告: 再看TOP SQL 具体SQL: select count(1) as chipinCount, sum(bets) as ...

  9. oracle查询不走索引全表扫描,使用索引快速全扫描(Index FFS)避免全表扫描的若干场景-Oracle...

    使用索引快速全扫描(Index FFS)避免全表扫描的若干场景 什么使用使用Index FFS比FTS好? Oracle 8的Concept手册中介绍: 1. 索引必须包含所有查询中参考到的列. 2. ...

最新文章

  1. C#程序调用外部程序
  2. 地理信息技术加持 用数字孪生让城市更“聪明”
  3. 实验一:JDK下载与安装、Eclipse下载与使用总结心得
  4. HDFS源码分析心跳汇报之数据结构初始化
  5. android dialog横屏,解决dialog在横竖屏切换时消失
  6. python3随笔-特征值,特征向量,逆矩阵
  7. Where is number of opportunities not displayed message poped up
  8. Android实现分享代码,Android 分享功能的实现代码
  9. 人工智障学习笔记——深度学习(1)神经网络
  10. Hyper-v副本容量规划器
  11. 如何在 Linux 终端中复制粘贴 [初学者教程]
  12. WLT8016:模组通信调试
  13. ubuntu1804+CUDA10+cudnn7.4.2+TensorFlow2+Pytorch1.3 9700K+双路RTX 2080TI
  14. 航班延误来领钱,信用卡航班延误险最全攻略(2018年版)
  15. 程序员之死——致所有重压下的你
  16. 获取汉字的五笔,全拼和双拼的工具类
  17. 所谓的进步和提升,就是完成认知升级
  18. 移动硬盘 无法访问 解决方法
  19. 考研经验贴(南京航空航天大学,电子信息专硕)
  20. JS中操作字符串的常用方法

热门文章

  1. 21天Jmeter打卡Day21生成HTML测试报告
  2. 一个简单的重命名,在git中也有这么多学问
  3. PAT甲级1009 多项式相乘
  4. 存储过程返回结果集_PostgreSQL函数返回结果集
  5. linux nfs 多个ip,linux基础之NFS
  6. 基于DeepLabV3+与U-Net融合的黄瓜叶片病害严重程度分类方法
  7. 聊一聊Kaggle比赛
  8. java 1.7 环境变量_安装JDK1.8之后又安装1.7出现的环境变量问题
  9. 一种新的排序算法,基于优先队列
  10. php无法创建cookie,php cookie无法正常工作