大量のデータを含むテーブルがあります。余分な列id
を追加して、主キーとして使用したいと思います。この列を1つの1
からrow count
の値で埋めるより良い方法は何ですか
現在、カーソルを使用し、行を1つずつ更新しています。数時間かかります。もっと速くする方法はありますか?
ありがとうございました
このようにしてください:
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)
特定の順序で行番号を追加する場合は、新しいテーブルにROW_NUMBER()を実行してから元のテーブルを削除できます。ただし、テーブルのサイズやその他のビジネス上の制約によっては、そうしたくない場合があります。これは、テーブルを並べ替えるロジックが存在することも意味します。
SELECT ROW_NUMBER() OVER (ORDER BY COL1, COL2, COL3, ETC.) AS ID, *
INTO NEW_TABLE
FROM ORIGINAL_TABLE