database - 带where子句执行的sql查询

标签 database oracle sql

我有这样的查询:

(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/

相关文章:

java - 失败.org.hibernate.HibernateException

c++ - Oracle 11gR1 或 R2 客户端上是否有设置可在 ODBC API 调用中将 SELECT COUNT(*) 返回的数据类型从 DOUBLE 更改为 LONG?

sql - 将 CLOB 转换为 NUMBER 进行比较 - Oracle

database - 手机间隙 : easiest way to store data/Phonegap reference

database - 主键应该是 auto_increment 吗?

java - ORA-29532 : Java call terminated by uncaught Java exception: java. awt.HeadlessException

sql - T-SQL插入触发器在多个表上根据if条件插入、更新

java - 为什么会出现 "MySQLSyntaxErrorException:"错误?

sql - 从 select sql 动态列名

mysql - JPQL JOIN查询对应值的行数(针对多列)