数据库 SQL 语句慢,执行了 10s 左右,各位老师看下,哪里有明显可以改进的地方,谢谢指点~

lanqiu1986 · 2017年08月17日 · 最后由 lanqiu1986 回复于 2017年08月18日 · 6614 次阅读

说明: 1 在 oracle 中查询数据 2 a,b,c 三个表关联,查询表 a 的 jiesuanje 的和 3 a 与 b 关联,b 与 c 关联,通过表 c 的日期字段 shoufeirq 过滤;和表 a 的 hesuanxm 字段过滤

sql 语句如下:

select sum(a.jiesuanje) 
from a, b,c
where a.yijiid = b.yijiid and b.shoufeiid=c.shoufeiid 
and a.hesuanxm<>'29' 
and c.shoufeirq between to_date('2017-07-01 00:00:00','yyyy-mm-dd hh24:mi:ss')  and  to_date('2017-07-30 23:59:59','yyyy-mm-dd hh24:mi:ss') 

以上 sql 语句执行了 10s 左右, 执行计划如下

huacnlee 屏蔽了此话题:先把你的 SQL 写对,明显有错误,然后描述清楚业务场景,要查什么数据库,SQL 目的是做什么 08月17日 17:19
huacnlee 关闭了讨论。 08月18日 09:19
huacnlee 重新开启了讨论。 08月18日 09:19

有这个性能挺正常的啊

  1. to date 去掉,改成计算好的日期传进去
  2. c.shoufeiriqi 加索引
  3. a.yijiid b.yijiid b.shoufeiid 加索引

还慢的话只能通过应用层面优化了

都用了 Oracle 了,就不要怕省钱直接买 Oracle 的优化器

nouse 回复

还有这个东西,谢谢回复~

需要 登录 后方可回复, 如果你还没有账号请 注册新账号