web-dev-qa-db-ja.com

SQL Server:新しいID列を追加し、列にIDを設定する方法

大量のデータを含むテーブルがあります。余分な列idを追加して、主キーとして使用したいと思います。この列を1つの1からrow countの値で埋めるより良い方法は何ですか

現在、カーソルを使用し、行を1つずつ更新しています。数時間かかります。もっと速くする方法はありますか?

ありがとうございました

55
Sergejs

このようにしてください:

ALTER TABLE dbo.YourTable
ADD ID INT IDENTITY(1,1)

列が作成され、integer値が自動的に入力されます(アーロンバートランドがコメントで指摘しているように、どの行がどの値を取得するかを制御することはできません-SQL Serverはそれを独自に処理しますしかし、すべての行は有効なint値を取得します-NULLまたは重複する値はありません)。

次に、それを主キーとして設定します。

ALTER TABLE dbo.YourTable
ADD CONSTRAINT PK_YourTable PRIMARY KEY(ID)
120
marc_s

特定の順序で行番号を追加する場合は、新しいテーブルにROW_NUMBER()を実行してから元のテーブルを削除できます。ただし、テーブルのサイズやその他のビジネス上の制約によっては、そうしたくない場合があります。これは、テーブルを並べ替えるロジックが存在することも意味します。

SELECT ROW_NUMBER() OVER (ORDER BY COL1, COL2, COL3, ETC.) AS ID, *
INTO NEW_TABLE
FROM ORIGINAL_TABLE
2
Misa