没有特定于索引对象的权限.所以,就我自己而言,我会说索引将被自动使用 – 即使它在不同的模式中.但是,由于对链接答案的评论提出疑问,我使用oracle 11g进行了实验:
作为用户sonia:
SQL> create table t as (select level n from dual connect by level < 100);
Table created.
SQL> explain plan for select * from sonia.t where n < 10;
SQL> @UTLXPLS.SQL
TABLE ACCESS FULL T
SELECT STATEMENT
SQL> grant select on t to sylvain;
Grant succeeded.
作为用户sylvain:
SQL> explain plan for select * from sonia.t where n < 10;
Explained.
SQL> @UTLXPLS.SQL
TABLE ACCESS FULL T
SELECT STATEMENT
SQL> create index syl_idx on sonia.t(n);
Index created.
SQL> explain plan for select * from sonia.t where n < 10;
Explained.
SQL> @UTLXPLS.SQL
INDEX RANGE SCAN SYL_IDX
SELECT STATEMENT
回到sonia:
SQL> explain plan for select * from sonia.t where n < 10;
Explained.
SQL> @UTLXPLS.SQL
INDEX RANGE SCAN SYL_IDX
SELECT STATEMENT
如您所见,在从sonia和sylvain查询表时,都使用SYL_IDX(在sylvain模式中创建的sonia.t的索引).拥有表的选择权限就足够了.