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