易截截图软件、单文件、免安装、纯绿色、仅160KB

oracle经验之ANY,SOME,ALL区别


因为很少用到, 所以几乎忘记了这几个函数, 不过它们还是很有用的使用它们可以大大简化一些SQL文的语法, 至于效率问题, 如CCW所说它们和EXISTS, IN 之类没有什么差别, 而且要具体问题具体分析
其中ANY和SOME在意思上是相同的, 可以相互替代.
举几个例子来说明ALL和ANY的用法
1. SELECT * from TABLEA WHERE FLD > ALL(SELECT FLD from TABLEA)
这相当于
SELECT * from TABLEA WHERE FLD > (SELECT MAX(FLD) from TABLEA)
2. SELECT * from TABLEA WHERE FLD > ANY(SELECT FLD from TABLEA)
这相当于
SELECT * from TABLEA WHERE FLD > (SELECT MIN(FLD) from TABLEA)
3. SELECT * from TABLEA WHERE FLD = ANY(SELECT FLD from TABLEA)
这相当于
SELECT * from TABLEA WHERE FLD IN (SELECT FLD from TABLEA)
最后, 关于HAVING它是用于合计计算的运算符, 它和WHERE有着不同的含义
当使用GROUP时HAVING是对各组中的记录进行比较的意思, 换句话说它是选择一组数据的条件
而WHERE则和分组无关, 它是选择一行数据的条件
比如,
SELECT NAME, AVG(PRICE) from STORE
GROUP BY NAME
HAVING AVG(PRICE) > 10
这里的HAVING是WHERE无法替代的
至于效率, WHERE是在生成结果集之前就完成的处理, 而HAVING则要等到结果集做成后在循环执行的处理, 自然效率要低一些, 因此在只需要对行进行操作的时候, 不要使用HAVING


相关文档:

Oracle调整与SQL 语句的调优的关系

Oracle调整与SQL 语句的调优的关系
在Oracle调整中我们还会涉及到SQL 语句的调优,我们接下来就来看以下的 SQL 语句的调优。我们都知道 Oracle 中的 SQL 调优是一个相当复杂的主题,甚至是需要整本书来介绍 Oracle SQL 调优的细微差别。
不过有一些基本的规则是每个 Oracle DBA 都需要跟从的,这些规则可以改善他们系统的 ......

Oracle RAC 归档 与 非归档 切换


Oracle 的生产库都是启动在归档模式下,RAC下归档非归档的切换和单实例也是一样的,都是在MOUNT模式下执行ALTER DATABASE ARCHIVELOG/NOARCHIVELOG;命令。 不同的是:RAC环境下所有实例都必须处于非OPEN状态,然后在任意一个处于MOUNT状态的实例执行ALTER DATABASE命令,操作成功后,再正常启动 ......

Oracle复杂查询

1、查询两个日期之间的数据。
假设有表Table1,其创建表的sql语句为:
create table Table1(
StationID    NUMBER(10) Primary key,
Year           NUMBER(4)  not null,
Month        NUMBER(2)  n ......

Oracle waits event:DB File Sequential Read

The DB File Sequential Read wait event generally indicates a single block read (an index read,
for example). A large number could indicate poor joining orders of tables or unselective indexing.
This number will certainly be large (normally) for a high-transaction, well-tuned system. You ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号