首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >查询耗时较长

查询耗时较长
EN

Stack Overflow用户
提问于 2014-03-04 23:55:03
回答 3查看 78关注 0票数 0

我有以下查询

代码语言:javascript
复制
 SELECT * FROM A JOIN B ON A.a=B.b JOIN C ON A.a=C.c.

上述查询返回百万行,并花费大量时间返回结果。如何才能只看到前"N“条记录,以便查询运行得更快。

EN

回答 3

Stack Overflow用户

发布于 2014-03-05 00:26:11

在Oracle中,您只需在where子句中添加rownum

代码语言:javascript
复制
SELECT *
FROM A JOIN
     B
     ON A.a = B.b JOIN
     C
     ON A.a = C.c
WHERE rownum < 100;
票数 2
EN

Stack Overflow用户

发布于 2014-03-05 00:38:03

您可以使用提示first_rows

代码语言:javascript
复制
SELECT /*+ FIRST_ROWS(100) */ * FROM A JOIN B ON A.a=B.b JOIN C ON A.a=C.c

还要检查你是否有A.A.,B.b和C.c.的索引。

作为补充,你应该理解any sorting(order by),或解析函数,或group by操作,或distinct (可能还有其他需要整个数据集的东西,例如UNIONINTERSECT)会破坏这个提示,并且无论如何都会收集整个数据集。没有它,它们就不能工作:例如,如果没有完整的列表,如何对数据集进行排序?

票数 1
EN

Stack Overflow用户

发布于 2014-03-04 23:58:40

您可以使用TOP子句获得所需的记录数。下面是一个例子:

代码语言:javascript
复制
SELECT TOP n *
FROM A
JOIN B ON A.a=B.b 
JOIN C ON A.a=C.C
票数 -2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22176714

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档