2013-03-04 29 views
0

我有两个用户 - user1,user2。Oracle查询性能是否取决于数据库用户?

两者都被授予了某个视图的选择授予,比如由某个其他用户创建的视图1称为manager1。

现在,user1和user2都在manager1的视图上创建了同义词,因此它们不需要使用manager1.view_name进行查询,而只需使用view name。现在

CREATE OR REPLACE SYNONYM user1.view_name1 FOR manager1.view_name1; 

我的问题是当在USER1执行,但是当用户2下执行的是少于第二相同的查询花费更长的时间。

我尝试了不同的组合和不同的执行顺序以避免缓存问题。但徒劳无益。请帮忙。

在user1下花费大约10秒。 :(

+2

它们是不同的查询文本的至少一个字符是不同的。看到这两个查询的执行计划,并迫使坏遵循良好的执行计划。如果我们可以帮助您如果VPD/RLS政策上的观点(只是猜测) – 2013-03-04 08:58:50

+2

检查你的DBA可以看到:他们是完全SAEM查询和既有相同的计划的哈希值。 ' – tbone 2013-03-04 12:17:03

+0

@FlorinGhita使您发布两个执行计划和查询 – Anubhab 2013-03-05 05:29:05

回答

1

有各种各样的原因,相同的SQL语句(完全相同的文字),可以有不同的执行计划。这可以是一个Oracle错误或在“环境”的差异。例如不同的数据类型为占位符,不同NLS_参数(排序,区分大小写)。

相关问题