Oracle数据库sql查询缓慢问题

iboy1983 2014-02-19 01:38:29
select count(*) as RowCount from table1 where
Status is null and exists(select reference from table2 where actionUser = 'xxx' and flow = 'yyy' and table2.reference = table1.reference)
or Status = 'st'
我在Oracle数据库中执行这句语句查询的时候,非常缓慢,通常要等待40秒左右才会给出查询结果
但是如果去掉 or Status = 'st' 就非常快,1秒都不到
求高手大大们帮下忙,看看什么原因导致查询缓慢。
...全文
403 4 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
iboy1983 2014-02-19
  • 打赏
  • 举报
回复
谢了,我把status还有table1和table2的reference加了索引以后就OK了
_拙计 2014-02-19
  • 打赏
  • 举报
回复
那你应该是Status 没建索引吧,is null 是走全表扫描的, 如果建了索引很是很慢 or 换成union all试试?
放飞的心灵 2014-02-19
  • 打赏
  • 举报
回复
Status 字段上是不是没有索引,你查一下执行计划,看是走索引还是全表扫描
iboy1983 2014-02-19
  • 打赏
  • 举报
回复
单纯执行:select count(*) from table1得到的数字是15593 执行:select count(*) from table2得到的数字是24449 查询数据量感觉不是很大

17,382

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 基础和管理
社区管理员
  • 基础和管理社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧