2017-04-25 49 views
-4

我想问问使用Synonym还是使用表的实际名称来调整SQL查询的性能更好?如何调整Oracle SQL查询

+2

你有没有注意到有什么区别?查询计划告诉你什么? – rene

+1

我假设差异会在几微秒甚至纳秒的范围内。 –

+0

@Wernfried Domscheit即使它在表中的数据非常大 – lena

回答

1

同义词是实际数据库对象的标签。它们被用作抽象层。主要用于引用其他模式或远程数据库中的对象。使用同义词意味着当我们在不同的环境中移动时,我们不必更换代码。

使用同义词的性能受到追捧。在查询优化器将寻找在这个顺序匹配的对象给出对象名称:

  1. 在引用架构中的一个表或视图(默认为当前架构)
  2. 在参考架构中的私有同义词
  3. 公共同义词

所以,如果我们目前的模式有一个表T23数据库将使用在我们的查询,而不是通过公共同义词T23引用的表。

根据数据字典的状态,查找的成本范围应该从完全可以忽略不计到可以忽略的程度。

使用同义词不会影响实际查询的性能。也就是说,这两个查询将具有相同的执行配置文件:

select * from synonym_of_some_table; 
select * from [email protected]_db; 

“即使它在表中的数据是非常大的”?

是的,即使表中的数据非常大。使用同义词不会影响以任何方式检索数据。同义词不像意见,它可以使调整困难得多。