使用ROWID和ORA_ROWSCN调优查询



我有一个下面的查询,它占用了很多时间,因为表非常大,这个查询还获取伪列ROWID和ORA_ROWSCN。

select ROWID, ORA_ROWSCN, t.C1, t.c2, t.c5, t.c7, t.c9 from tab t

我尝试使用提示ALL_ROWS并运行统计数据,但仍然没有多大帮助。请建议。提前谢谢你。

Rowid和ora_rowscn都位于数据块中。

Rowid由:

  • 对象的数据对象号

  • 行所在数据文件中的数据块

  • 数据块中的行位置(第一行为0)

  • 行所在的数据文件(第一个文件为1),文件号相对于表空间

ora_rowscn给出了行所在块的最后一次修改号(注意,不是行本身)。

这些对从大表中检索所有行的总时间都没有显著贡献(除非您使用scn_to_timestamp函数)。

这里的问题是没有WHERE子句,并且从一个大表中检索所有行需要花费很多时间。如果您真的需要所有的行,难道没有任何列可以用来将查询分割成许多更小的查询,这样您就可以开始更快地获得结果,甚至可能使整个过程并行化(一个日期列,或者一个ID列,您可以在where子句上使用mod,诸如此类)?

相关内容

  • 没有找到相关文章