【发布时间】:2013-12-30 18:21:36
【问题描述】:
我有一个查询,我正在搜索一系列用户帐户,但每次我通过查询时,我都会使用多个 ID 号的前 5 位数字,并以此为基础进行搜索。我想知道当我们使用超过 10 个用户 ID 进行搜索时,是否有其他方法可以为用户 ID 范围重写此查询?这种查询中的搜索是否会对性能造成巨大影响?
示例:
select A.col1,B.col2,B.col3
from table1 A,table2 B
where A.col2=B.col2
and (B.col_id like '12345%'
OR B.col_id like '47474%'
OR B.col_id like '59598%');
我正在使用 Oracle11g。
【问题讨论】:
-
"如何避免在sql查询中使用OR?"这是一个错误的问题。正确的问题:“我怎样才能提高这个查询的性能?”。不要在查询中随意选择一些东西并决定让它消失。
-
在查询中使用
OR不一定有什么问题。但是我建议不要使用 pre ANSI 92 join 语法。而不是from table1 A, Table2 B使用FROM table1 A INNER JOIN Table2 B ON A.Col2 = B.col2 -
用你的搜索值创建一个临时表并正确加入它,它会清理丑陋的
-
您的查询中的
C.col_id是什么?你又错过了一张桌子吗? -
抱歉,一直是 b.col_id。
标签: sql performance oracle11g