- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
表格详细信息:
这些请求的目标是返回是否存在现有条目。条目数无关紧要。
有没有人解释一下原因
SELECT COUNT(rn) count
FROM
(
SELECT ROW_NUMBER() OVER (order by t2.id_field) AS rn
FROM table1 t1
INNER JOIN table2 t2 ON t2.id_table2 = t1.id_table2
WHERE t2.id_field = 2
)
WHERE rn < 2;
比 快 20 倍:
SELECT COUNT(rn) count
FROM
(
SELECT 1 rn
FROM table1 t1
INNER JOIN table2 t2 ON t2.id_table2 = t1.id_table2
WHERE t2.id_field = 2
)
WHERE ROWNUM < 2;
最佳答案
如前所述,ROW_NUMBER() 和 ROWNUM 根本不等同。
第一个是使用窗口的解析函数。 order by command指定顺序。
http://docs.oracle.com/cd/E11882_01/server.112/e26088/functions004.htm#SQLRF51198
select
ename,
ROW_NUMBER() OVER (order by ename ) AS rn
from emp
where deptno =20;
ENAME RN
---------- ----------
ADAMS 1
FORD 2
JONES 3
SCOTT 4
SMITH 5
Execution Plan
----------------------------------------------------------
Plan hash value: 3145491563
---------------------------------------------------------------------------
| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |
---------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | 5 | 45 | 4 (25)| 00:00:01 |
| 1 | WINDOW SORT | | 5 | 45 | 4 (25)| 00:00:01 |
|* 2 | TABLE ACCESS FULL| EMP | 5 | 45 | 3 (0)| 00:00:01 |
---------------------------------------------------------------------------
使用行数:
select ename,
ROWNUM
from emp
where deptno =20;
ENAME ROWNUM
---------- ----------
SMITH 1
JONES 2
SCOTT 3
ADAMS 4
FORD 5
Execution Plan
----------------------------------------------------------
Plan hash value: 1498225739
---------------------------------------------------------------------------
| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |
---------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | 5 | 45 | 3 (0)| 00:00:01 |
| 1 | COUNT | | | | | |
|* 2 | TABLE ACCESS FULL| EMP | 5 | 45 | 3 (0)| 00:00:01 |
关于sql - 甲骨文 : ROW_NUMBER 20 times faster than ROWNUM,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21751417/
我正在尝试在 64 位 Windows 7 计算机上安装 Oracle Instant Client 和 ODBC 驱动程序。 我已经下载了两个 即时客户端包 - 基本 即时客户端包 - ODBC 我
每当我在 ORACLE 中授予用户“所有权限”(下面的示例)时,这实际上做了什么? 我的理解是,它赋予用户任何权限,例如在该架构中插入、删除等,但不数据库中的任何架构? grant all privi
我目前无法访问任何 Oracle 书籍,而且我的在线搜索几乎没有返回任何结果(Google 中的 (+) 什么也没有显示)。我正在查看现有代码以向查询添加一些字段并看到: AND lookup.Loo
我的访问表如下: insert into Visit values(12, to_date('19-JUN-13', 'dd-mon-yy'), to_date('19-JUN-13 12:00 A.
我的数据格式如下: cons_Type COLUMN_NAME P (COL1) R (COL6_REFERENCE) R (C
我希望我的表根据它的 TEMPLATE_ID 对其“排序依据”列进行排序。 我希望这发生在插入时(可能通过插入触发器)。 例如,如果我运行以下插入,我应该得到下表中的值。 INSERT INTO TE
我有一个场景,我必须为低于 SQL 阈值限制的值排名负数。任何人都可以帮助我吗? Name Target Rank John 2500 -2 Hopkins 4000 -1
我想用另一个表中的随机名称更新表中的名称。表 Users 中有真实的用户名。表 tmp_users 中有编造的名字。我想用 tmp_users 表中的随机名称更新用户表中的所有名称。这个想法是用假客户
如何从匹配删除表的表中删除记录?就像,我有一个记录键表,上面写着需要从我的主表中删除的内容。我将如何编写删除语句来表示“从我的主表中删除此字段与我的删除表中的字段匹配的任何内容?” 最佳答案 如果是小
我有一个关于表创建的问题。我想将“Ono”和“Pno”的属性组合成一个新表的主键。这些都是外键,每个都来自不同的表。我是否只使用 CONSTRAINT Ono_Pno_PK PRIMARY KEY (
我的情况(简化)如下所示: 表 UNITS 在 UNITS.NAME 上有一个 PK。 (单位名称, varchar(12)) 表 DEPTS 在 DEPTS.NAME 上有一个 PK。 (部门名称,
假设我有一个带有自动递增代理键的表。 这是使用反向索引的好例子吗? 我说的对吗: 插入(到索引中)会更快......因为新值会随机插入,而不是总是进入最右边的叶子(不断强制重新平衡)。 索引查找会稍微
我试图创建一个新表 (tableB),它带有到另一个表 (tableA) 的外键约束,只是想知道是否可以创建所有需要的约束和索引。我的目标是拥有一个 create table不需要 alter tab
唯一约束列中是否可以有2个或多个空值? 最佳答案 易于检查:(答案为是) create table t1 (col1 number unique); Table T1 created. insert
如何从delphi 7(ado组件)将blob数据插入oracle xe 最佳答案 使用TAdoQuery检查这些样本组件。 直接从文件加载数据 ADOQuery1.Parameters.AddPa
我试图在表 A 上创建一个约束,以检查表 B 中是否存在一组记录。我可以使用外键,但问题是表 B 中的数据不唯一。 有没有办法在不创建触发器的情况下创建这样的约束? 编辑:我无法更改表 B 结构。 最
我正在加载一个查找员工表的表。然而,有时源文件和 Employee 表中的名称不正确匹配。 **Employee table:** Employee Name Paul Jaymes **Source
我正在寻找在相对较大的表中进行相对复杂查询的最有效方法。 概念是: 我有一个表,其中包含可以相互并行运行的阶段的记录 记录量超过 500 万(并且还在增加) 时间段从大约 5 年前开始 由于性能原因,
我已经搜索了我的问题的解决方案,这个 question describes it perfectly . Let´s say I have one table called ProjectTimeSp
如何获取 varchar2 列中允许的最大和最小长度。我必须测试来自某个远程数据库的临时表的传入数据。并且要针对特定列测试每一行值是否具有可以设置到该列中的最大值或最小值。 所以我要使用其架构详细
我是一名优秀的程序员,十分优秀!