Sql 查询耗时较长
我有以下疑问Sql 查询耗时较长,sql,performance,oracle,rownum,Sql,Performance,Oracle,Rownum,我有以下疑问 SELECT * FROM A JOIN B ON A.a=B.b JOIN C ON A.a=C.c. 上面的查询返回一百万行,返回结果需要很多时间。如何只查看第一个“N”记录,以便查询运行得更快。使用TOP子句可以获得所需数量的记录。以下是一个例子:- SELECT TOP n * FROM A JOIN B ON A.a=B.b JOIN C ON A.a=C.C 在Oracle中,只需将rownum添加到where子句: SELECT * FROM A JOIN
SELECT * FROM A JOIN B ON A.a=B.b JOIN C ON A.a=C.c.
上面的查询返回一百万行,返回结果需要很多时间。如何只查看第一个“N”记录,以便查询运行得更快。使用TOP子句可以获得所需数量的记录。以下是一个例子:-
SELECT TOP n *
FROM A
JOIN B ON A.a=B.b
JOIN C ON A.a=C.C
在Oracle中,只需将
rownum
添加到where
子句:
SELECT *
FROM A JOIN
B
ON A.a = B.b JOIN
C
ON A.a = C.c
WHERE rownum < 100;
选择*
从一个连接
B
在A.A=B.B连接上
C
在A.A=C.C
其中rownum<100;
您可以使用提示:
还要检查你是否有A.A、B.B和C.C的索引
作为补充,您应该了解任何排序(
按
排序),或分析函数,或按
操作分组,或不同的
(可能还有其他要求整个数据集的内容,例如联合
或相交
)将销毁此提示,并且无论如何都将收集整个数据集。如果没有它,它们根本无法工作:例如,如果没有完整的列表,如何对数据集进行排序?选择前100个*。
您可以使用从…中选择前n个*。您使用的是什么数据库?@GordonLinoff我使用的是oracle第一行
提示没有限制行,虽然它可能会使返回第一行更快。是的,但我认为rownum非常清楚,问题是要让它更快。。。无论如何,答案的最大部分是关于另一件事你是对的,OP的真正问题是查询的性能-但他们最直接的问题是如何限制行,而且他们似乎不熟悉ROWNUM解决方案。但你的回答很有用,我不会投反对票。
SELECT /*+ FIRST_ROWS(100) */ * FROM A JOIN B ON A.a=B.b JOIN C ON A.a=C.c