ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

查询语句有 or 会导致查询速度变慢问题解决

2020-10-27 10:35:07  阅读:444  来源: 互联网

标签:语句 log 变慢 用户 查询 user 编号 id


先上查询语句

select u.c_user_id      用户编号,
       u.c_old_user_id  旧编号,
       u.c_user_name    用户名称,
       u.c_user_address 用户地址,
       日志说明         日志说明,
       操作人           操作人,
       操作时间         操作时间,
       备注原因         备注原因
  from yx_user u,
       (select regexp_substr(substr(l.c_log, 1, 13), '[0-9]*[0-9]', 1) 用户编号,
               l.c_log 日志说明,
               q.c_user_name 操作人,
               l.d_log_operation_time 操作时间,
               l.c_log_remark 备注原因
          from yx_log l, qx_systemuser q
         where q.n_systemuser_id = l.n_log_operator_id
           and l.d_log_operation_time between
               to_date('2020/9/26 0:00:00', 'yyyy-MM-dd hh24:mi:ss') and
               to_date('2020/10/27 23:59:59', 'yyyy-MM-dd hh24:mi:ss')
           and l.n_log_name_id = 3
           and l.n_log_operator_id = 1) w
 where (u.c_user_id = w.用户编号 or u.c_old_user_id = w.用户编号)
 order by 操作时间 desc

  上面查询sql 只有两会在那个表  u 和 w ,w 里面的sql 没有出现查询慢的情况。

(u.c_user_id = w.用户编号 or u.c_old_user_id = w.用户编号)  
上面条件 使得查询语句贼慢;
优化如下:
(case when length(u.c_user_id) =13 then  u.c_user_id  else  u.c_old_user_id  end = w.用户编号 )
优化以后可以说是差不出来数据和秒出的区别
数据量 u表是 主表 大概有几万条数据 w表是临时表 应该就百十来条数据; 第一条查询条件个人理解就是遍历查询两次 第二条 就是遍历查询一次;
深层理解 请参考:https://www.cnblogs.com/kerrycode/p/11911998.html
做个记录;理解偏差很大 ;以后弥补

标签:语句,log,变慢,用户,查询,user,编号,id
来源: https://www.cnblogs.com/pyf97/p/13883457.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有