现在有一表A
现两个Oracle用户A,用户B(其中用户A是表A的Owner)我给表A创建了Public的同义词(即所有Oracle用户都可以访问A)现在有个问题,当用户B登录Oracle访问表A时速度很慢(因为表A数据量很大)问:怎样让B用户登录访问表A时使用表A的索引?这样就可以增加访问速度!

解决方案 »

  1.   

    用GRANT ALL ON 表A TO B
    把权限授予给B用户
    然后创建索引的公有同义词就可以了
    应该是没有问题的
      

  2.   

    呵呵,楼主是比较幽默,知道看执行计划了,应该不会不知道索引也是全局对象,或者说是一个物理结构,怎么不能共享呢?
    至于创建索引,可以用create any index权限
      

  3.   

    我的oracle现在还停留在“点”的水平,没有连成“线”、扩展到“面”。-_-!!! 请教ern(学习Oracle) 两个问题:
    1。我查看执行计划时发现,同一条sql语句,A用户和B用户的执行计划竟然不一样,这是为什么?
       例如:表A有字段A1和字段A2(对应索引A1和索引A2)
             执行sql语句:select * from 表A where A1='xxx'
             用户A的执行计划中使用了索引A1,而用户B的执行计划中却使用索引A22。上面的问题是不是用户B的权限不对产生的,那对于非表A Owner的用户需要授予哪些权限才能满足要求?