2009-04-28 11 views
15

私は最近、多くのDBリファクタリングを行ってきており、同義語は非常に有用です。私が最初に同義語を入れたとき、私はリファクタリング中に非常に一時的になると思っていました。今私は、これらの同義語のいくつかを守るためにいくつかの良い理由があるかもしれないと考えています。SQL Server - 類義語ヒントとコツ

  • 抽象的なレイヤーとして使用された人は誰ですか? 抽象レイヤーですか?

  • パフォーマンスコストはいくらですか?

  • インデックス付きの問題はありますか?

  • ヒントやヒント?

私の最初の質問ですので、優しくしてください。

おかげ

答えて

12

同義語は、既存のデータベース・オブジェクトの抽象化/代替名であるため、テーブルの場合は、インデックスの動作は実行計画が生成される基礎となるオブジェクトすなわちのものと同一です、テーブル名または対応する同義語を使用するかどうかにかかわらず、同じ計画が生成されます。

+0

ニースの仕事スティーブ –

+0

私たちはどのように私は、クエリを使用して同義語のリストを取得することができます> INFORMATION_SCHEMA.TABLES'同じよう FROM 'SELECT TABLE_NAMEをキシにすることにより、テーブルのリストを取得することができます? – RSK

+0

select schema_name(schema_id)+ '。' + sys.tablesの名前 select schema_name(schema_id)+ '。' + name、* from sys.procedures select schema_name(schema_id)+ '。' + sys.viewsの名前 – Sage

3

はい、シノニムは、抽象化レイヤーまたは間接化レイヤーとして使用できます。たとえば、実行時まで実際のデータベース名がわからない外部データベースのオブジェクトにアクセスする必要がある場合などです。シノニム名でオブジェクトを参照するSQLを記述し、後でシノニムを動的に作成することができます。

索引はありません。シノニムが表または索引付きビューを参照する場合、それらのオブジェクトに定義されている索引はすべて再生中です。

パフォーマンスは、オブジェクトを完全修飾名で明示的に参照するのと同じにする必要があります。

5

実際には、インデックスを使用するときに私はうつ病に遭遇しました....私はこのサイトで関連記事を作成する方法があるかどうかはわかりませんが、ここでは同義語とテーブルインデックス。

SQL Server Table Synonyms with Indexes

関連する問題