いくつかの列を含むテーブル変数を宣言します。テーブル変数の列にインデックスを作成する方法
宣言@MyContactsテーブル(それ
で
//列定義)。
は、主キーを定義することによって、私はテーブル変数にインデックスを作成するSQLサーバー2008
いくつかの列を含むテーブル変数を宣言します。テーブル変数の列にインデックスを作成する方法
宣言@MyContactsテーブル(それ
で
//列定義)。
は、主キーを定義することによって、私はテーブル変数にインデックスを作成するSQLサーバー2008
のインデックスは、テーブル変数の宣言の中に暗黙的に行うことができますすることができますどのように、私はそれにcolumnAを考えてみましょう固有の制約を作成します。プライマリキーはクラスタ化インデックスを表し、ユニーク制約は非クラスタ化インデックスを表します。
DECLARE @Users TABLE
(
UserID INT PRIMARY KEY,
UserName varchar(50),
UNIQUE (UserName)
)
詳細については、chech THISの記事を参照してください。
declare @YourTempTable table
(
ID int not null primary key,
Name nvarchar(255) null
)
ありがとう、あなたの答えは非常に有用だった – DotNetUser
カラム定義とともに指定できます。
declare @MyContacts table (columnA int unique nonclustered ...)
あなたの答えをありがとう、それは助けた。 – DotNetUser
あなたは、インデックスを必要とするのに十分な大きさのテーブルを持っている場合は、一時テーブルでそれを行う、テーブル変数にそれをしません!
表変数には、制限のすべての種類を持っている:
ROLLBACK
何もテーブル変数に行わことができます
あなたは、インデックスを必要とする一時に入れるのに十分な大きさのものを持っている場合代わりにテーブル。
+1ユニークな制約は、パフォーマンスのためではなくデータ保護のために役立ちますが、一般的に私は同意します。パフォーマンス上の理由からインデックスが必要な場合は、誤った種類の一時オブジェクトを選択した可能性があります。それは普遍的には当てはまりませんが、通常はそれがうまくいくからです。 –
私はあなたの意見に同意しますが、私の場合はテーブル変数が必要でした。 – DotNetUser
+1私たちは皆直接の質問に集中していました。あなたはボックスの外で考えて、代替手段として貴重な情報を与えました。 –
ありがとうございました。 – DotNetUser
テーブル変数に条件付き一意制約を設定できますか? – Mohammadreza