【发布时间】:2016-10-24 09:35:35
【问题描述】:
当我通过 SQL Developer 查询我的数据库时,我一直想知道幕后发生了什么。
与表的大小无关,默认情况下我总是最多得到 50 行。我可以在结果表上向下滚动,显然它会以某种方式延迟加载其余的结果。
显示前 50 个结果似乎不会随表的大小而变化(至少对于简单的 SELECT * FROM t),所以这让我相信 SQL Developer 包含了我的 SELECT 语句 s带有SELECT * FROM s WHERE rownum <= 50。如果是这种情况,正如我想象的那样,它不会显示在Explain Plan 选项卡上。
如果需要,SQL Developer 之后如何懒惰地得到其余的结果?它是否使用某种偏移量?它是否总是需要重做查询,而不是只取rownum <= 50 的行,而是为rownum <= 100, 150 等做它?那肯定是低效的。但除非它这样做,否则它可能会获取错误的行集(因为行的表配置可能在中间发生了变化!)。
我还假设默认情况下 SQL Developer 实际上只从服务器获取最少量的数据,也就是说,它实际上并没有获取所有内容,尽管只显示了一些结果。是这样吗?
有人能解释一下这个问题吗?
【问题讨论】:
-
为什么不只为查询启用日志记录并检查日志?
-
我以前查看过日志,但它们似乎只包括我自己编写的查询,而不是发送到服务器的内容。我们指的是同一种日志吗?