我有一个相当复杂的视图(在多个数据库链接中使用多层视图),它需要一秒钟才能返回所有行。但是,当我要求不同的行时,它需要更多的时间。4分钟后我停止等待。
为了让我尽可能清楚:
select a, b from compicated_view; -- takes 1 sec (returns 6 rows)
select distinct a, b from compicated_view; -- takes at least 4 minutes
我觉得这很奇怪,但是,嘿,就是这样。我猜 Oracle 在计划查询时搞砸了。现在,有没有办法强制 Oracle 首先完成选择而没有不同,然后对结果执行“选择不同 *”?我查看了优化器提示,但找不到任何关于提示应用 distinct 的顺序的信息(这是我第一次优化查询,显然 :-/)。
我在 Oracle 10g EE 上使用 Oracle SQl Developer。