我有这样的查询:
(q1)
select a,b,c,d from abc
where param='x'
union
(q2)
select e,f,g,h from abc
where param='y'
我想知道 <param>='y'
的值是否query1 会被执行吗??
这是因为记录集“abc”非常非常大,实际查询涉及同一参数的 5-6 个联合(您可能会看到一次只需要一个查询数据)。因此,如果从所有查询中获取数据并根据 where 子句进行过滤,那么这将是一个很大的开销,而如果在此之前进行过滤,那么实际执行的查询中只有五分之一。
谢谢 喜满树
最佳答案
如果你这样写
where 1 = 2
可以在不接触数据库的情况下进行评估,然后 Oracle 将足够聪明,跳过访问表。
这甚至适用于绑定(bind)变量。
where ? = ?
当然,一涉及列,就得去看数据。
关于database - 带where子句执行的sql查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4224243/