oracle sql 用什么可以替代or,这样查询特别慢

((c.createdby = 'liuqi' ) or
(c.state = 'submit' and
(c.verfiedby = 'liuqi' )) or
c.state in
('verfied','pass','passtwo'))

可以用union,比如select 内容 from user where name='张三' union select 内容 from user where name='李四',相当于select 内容 from user where name='张三' or name='李四' ,因为union会用到索引,不知道你这个表有没有索引,表的数据多大?追问

没有建索引,不知道该把哪个字段建立索引,表的数据挺大,有几千条数据吧,后面还会一直加,如果采用您的union方式,那么sql语句会特别长。

追答

你好,索引一般应该加在你的条件字段上,你的可以在createdby,state 和verfiedby上,建完索引还要分析一下,如果表的数据才几千条应该很快,后面一直加,能有多大?会上百万以上或者上千万?sql语句会特别长的问题,看你表中字段有多少了?其实不知道你的表结构情况和你有没有和别的表有关连查询了

温馨提示:内容为网友见解,仅供参考
第1个回答  2013-10-17
唯一的优化方案就是,把越能命中的or语句放到最前面,增加前面减少后面的or 逻辑判断
第2个回答  2013-10-18
用case when 替换,应该会快点,而且安全
第3个回答  推荐于2017-09-25
用 union all
select * from tableA
where c1='A'
union all
select * from tableA
where c1='B'

oracle sql 用什么可以替代or,这样查询特别慢
可以用union,比如select 内容 from user where name='张三' union select 内容 from user where name='李四',相当于select 内容 from user where name='张三' or name='李四' ,因为union会用到索引,不知道你这个表有没有索引,表的数据多大?

oracle 查询的sql语句特别慢,是什么原因,是or特别慢吗,用什么优化,急...
把查询计划的内容发出来,你这一大堆代码谁能看出来啥啊。看你的代码这么长,条件那么多,语句用了函数,很多低效的or,not in等操作,另外还用了group by,order by,左右连接等等,如果表数据量很大的话,你这个语句性能不好是预料中的事情。如果你这条语句无法优化,建议从调整表结构角度考虑 ...

oracle 怎么提升游标速度
最好都使用after 触发器,before可能会有锁定的问题

oracle 多表查询速度太慢。求帮我优化一下
如果你想要的是满足任何一个条件就要检索出来的话,那么一定要有一个主表,就是查询主表的所有信息,再用其他表的字段和主表关联,有数据显示,没有数据不显示 分析你的SQL文,我推测tb_ajjbxx表是主表的概率比较高,那么SQL文的修改如下:select jbjxxid,anjianmingcheng,JBJXXSLBH,SARJBXXID,SARMC...

Oracle在查询Sql中不使用order by,导致数据量足够大的时候同样的sql查 ...
oracle是按照rowid来排序的,也就是每一行的地址,当中间发生一些数据操作,比如删除数据时,这个物理地址会被新数据使用,oracle的数据在存的时候也是杂乱无序的,可以通过创建索引,根据索引查询解决问题

...为什么加了一个exists后查询变得很慢很慢。oracle~~~万分感谢...
(2)改为嵌套查询,上面的结果查出来后再嵌套一层去查下面的结果,就是把exists放到外面一层,这样应该可以减少一部分时间,不过这种方法要实地测试。(也可以在嵌套层走一下hash join,就是不用exists直接用where等于的条件,应该也可以,你可以尝试下。可能需要在第一个查询中强制走一下hash join)...

oracle sql 查询我使用自已写的函数查询很快,加了函数做条件就很慢...
慢是因为 对于 几十万条记录左右,你那个 test(a) 函数, 需要执行 很多次, 每行执行一次, 然后判断 LIKE '%123%'至于:select a,b, test(a) c from demo; --只这样查很快 我估计你使用的是 PLSQL Developer。查询的时候, 默认是查询第一页, 因此很快。因为只显示少部分...

ORACLE检索的时候用IN 或者NOT IN非常的慢,什么原因?
in里面的数据集小的话,和in \/not in无关。如果大的话,可以改成exists\/ not exists对外面的大表的连接字段建索引具体慢在什么地方要看执行计划可以贴出具体的代码来看看

oracle 查询sql in数据太多数据太多
从两方面来说 (1)改用exists,这样的话查一遍就行了(虽然理论上是这样,不过我看执行计划没看出来),in的话是两遍 (2)尽量减少in内的数据,继续缩小范围,如果实在没办法减小范围,那就只能是多次查询(慎用,虽然说多次查询每次的量小了,但是多次查询也容易出问题),或者也可以用关联查询试...

【Oracle】使用WHERE
WHERE job_name LIKE ‘%’||chr (10) ||’%’;这里的n是ASCII码。空运算符NULL表示无数据,数学表达式包含NULL计算结果也是NULL。空值与空记录不同,空记录无返回值,不能操作;而包含空值的记录有返回值,可进行操作。正确使用Oracle SQL中的WHERE子句,可以有效筛选和处理数据,实现精准查询。

相似回答