0

現在、アプリケーションのメンテナンスを行っていますが、tsqlの修飾名に関して大きな問題が発生しました。誰かが私の混乱を解消してくれるのではないかと思います。

USE [DatabaseName]私の理解では、使用しているデータベースを宣言するために使用したいと思います。データベースの名前を「変更」すると、コード内のこれらの参照が自動的に更新されます。

ただし、このコードを最初に作成した開発者はを使用しましたUSE [DatabaseName]。その後、彼は次のように書いていますSELECT * FROM [DatabaseName].[dbo].[Table]。データベースの名前を変更すると、これは明らかに壊れます。私が読んだことから、あなたは次のような所有者だけに名前を修飾したいと思います:[dbo].[TableName]それでそれはパフォーマンスを向上させるどこを見るべきかを知っています。

彼が各ステートメントにデータベース名を含めた理由はありますか?

4

1 に答える 1

1

私が読んだことから、名前を[dbo]。[TableName]のように所有者だけに限定したいので、どこを見ればパフォーマンスが向上するかがわかります。

私が知っていることではなく、誰かが怠け者のように見えます。
私は常に3つの名前の形式を使用します(リンクされたサーバーインスタンスにアクセスしない限り、4つです)。

USE [appropriate database]利点は、誤ったステートメントを気にすることなく、正しいデータベースとスキーマからの正しいテーブルが使用されることです。オブジェクトが存在し、必要に応じてアクセス許可が有効である限り、USE [appropriate database]ステートメントを毎回アドレス指定しなくても、他のデータベースにストアドプロシージャ、関数、ビューなどを再作成できます。

しかし、私は同じインスタンス上の多数のデータベースに分散しているデータを扱っています。必ずしもそのように設計したわけではありませんが、3つ(または4つ)の部分修飾名形式を使用しても変わりません。

于 2010-09-22T23:26:07.697 に答える