[解決済み] SQL Server の CREATE TABLE ステートメントで非クラスター型非ユニーク・インデックスを作成する。
2022-09-30 22:03:57
質問
SQL Server の CREATE TABLE ステートメント内で、プライマリ キーまたはユニーク インデックスを作成することができます。また 非ユニーク インデックスを作成することはできますか?
CREATE TABLE MyTable(
a int NOT NULL
,b smallint NOT NULL
,c smallint NOT NULL
,d smallint NOT NULL
,e smallint NOT NULL
-- This creates a primary key
,CONSTRAINT PK_MyTable PRIMARY KEY CLUSTERED (a)
-- This creates a unique nonclustered index on columns b and c
,CONSTRAINT IX_MyTable1 UNIQUE (b, c)
-- Is it possible to create a non-unique index on columns d and e here?
-- Note: these variations would not work if attempted:
-- ,CONSTRAINT IX_MyTable2 INDEX (d, e)
-- ,CONSTRAINT IX_MyTable3 NONCLUSTERED INDEX (d, e)
);
GO
-- The proposed non-unique index should behave identically to
-- an index created after the CREATE TABLE statement. Example:
CREATE NONCLUSTERED INDEX IX_MyTable4 ON MY_TABLE (d, e);
GO
繰り返しますが、目標はCREATE TABLE文の後ではなく、その文の中で非一意なインデックスを作成することです。
価値あるものであるために、私は [SQL Server Books Online の CREATE TABLE に関するエントリ] を参照してください。 は役に立ちませんでした。
また [この質問】の] はほぼ同じですが、受理された回答は適用されません。
どのように解決するのですか?
SQL2014の時点では、以下の方法で実現できます。 インラインインデックス作成 :
CREATE TABLE MyTable(
a int NOT NULL
,b smallint NOT NULL
,c smallint NOT NULL
,d smallint NOT NULL
,e smallint NOT NULL
-- This creates a primary key
,CONSTRAINT PK_MyTable PRIMARY KEY CLUSTERED (a)
-- This creates a unique nonclustered index on columns b and c
,CONSTRAINT IX_MyTable1 UNIQUE (b, c)
-- This creates a standard non-clustered index on (d, e)
,INDEX IX_MyTable4 NONCLUSTERED (d, e)
);
GO
SQL2014以前のCREATE/ALTER TABLEでは、インデックスではなく、CONSTRAINTの追加のみを受け付けていました。主キー制約とユニーク制約がインデックスの観点から実装されているのは、副次的な効果です。
関連
-
[解決済み] sp_addrolememberとalter user with default schemaの違いは何ですか...?
-
[解決済み] SQL Server テーブルにカラムが存在するかどうかを確認する方法は?
-
[解決済み] SQL Server の DateTime データ型から日付だけを返す方法
-
[解決済み] SQL ServerでJOINを使用してUPDATE文を実行するにはどうすればよいですか?
-
[解決済み] SQL Server にテーブルが存在するかどうかを確認する
-
[解決済み] クラスター化インデックスと非クラスター化インデックスの実際の意味は何ですか?
-
[解決済み] SQL Serverでレコードを削除した後、IDシードをリセットする。
-
[解決済み] NULLも許容するユニークな制約を作成するにはどうしたらいいですか?
-
[解決済み】SQL Serverで既存のテーブルにデフォルト値を持つカラムを追加する
-
[解決済み】SQL Server DBのすべてのインデックスとインデックスカラムのリスト
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] 「ストアドプロシージャが見つかりませんでした
-
[解決済み] SQL Serverで小数点の後に2桁の数字を表示させる方法
-
[解決済み] TABLOCKとTABLOCKXの比較
-
[解決済み] sql文の角括弧[]の使い方を教えてください。
-
[解決済み] MS SQL Server 2005で行のSNoを自動的に設定する方法は?
-
[解決済み] ')' 付近の構文が正しくない場合の対処方法
-
[解決済み] sp_columnsが結果を返さないのはなぜですか?
-
[解決済み] SSRS 2つ目の文字列の前にある文字列から部分文字列を抽出する
-
[解決済み] オペランドタイプの衝突
-
[解決済み] MS SQL Serverで数値をパーセントでフォーマットする