我有一个数据库基础架构,我们经常(至少每天一次)将源表的全部内容复制到大约20个目标数据库。由于使用的复制代码(我们必须使用常规的oracle查询,无法控制或直接访问源数据库) - 这会导致对源表进行20个全表排序。如何针对重复的全表排序优化oracle查询?
有什么办法可以在查询中对此进行优化吗?我正在寻找一些能够基本告诉甲骨文“我将重复整理这张桌子”的东西? MySQL有一个myisamchk的选项,你可以告诉它对表进行排序并保持排序顺序,但显然这不适用于多种原因。
目前,还有一些涉及中间表(从A到B,然后从B到C同步)。我们确实可以控制中间表,所以如果有调整选项,那也是有用的。
一般来说,查询几乎都是非常简单的形式:
select a, b, c, d, e, ... z from tbl1 order by a, b, c, d, e, ... z;
我知道流,但如上所述,主要来源表是我们无法控制的,所以我们赢了”不能在那里使用流。 (另外,这些源表每天都从快照中完全重建,因此流无法正常工作。)
为了进一步说明 - 复制代码正在对源数据库和目标数据库进行并行行级比较,并对目标表执行一整套单独的行更新(I/U/D)它与源同步。同样的全表选择和排序也是针对目标表运行的。 – 2009-07-07 23:43:40
我没有得到你为什么要排序,如果目标是从一个表/数据库复制数据到另一个,你能解释一下吗? – 2009-07-08 09:42:54