2017-04-25 10 views
-4

シノニムまたは実際のテーブル名を使用して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; 

「テーブル内のデータもそれは非常に大きい」:つまり、これら2つのクエリは、同じ実行プロファイルを持っているのだろうか?

はい、テーブルのデータが非常に大きい場合でもあります。シノニムを使用しても、データの検索には影響しません。シノニムはビューが似ていないので、チューニングをもっと難しくすることができます。

関連する問題