2017-04-25 31 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; 

「即使它在表中的數據是非常大的」?

是的,即使表中的數據非常大。使用同義詞不會影響以任何方式檢索數據。同義詞不像意見,它可以使調整困難得多。