SQL快速生成100萬不重複的8位編號

USE tempdb

GO
-- 創建測試表

CREATE TABLE tb(id char(8))

 
-- 創建用於自動過濾重複值的唯一索引

CREATE UNIQUE INDEX IX_tb ON tb(id)

WITH IGNORE_DUP_KEY 

GO

 
-- 測試數據插入的處理時間, 記錄開始處理的時間點

DECLARE @dt datetime

SET @dt = GETDATE()

 
-- 插入隨機數據

SET NOCOUNT ON

DECLARE @row int

SET @row = 1000000 -- 設置總記錄數

WHILE @row >0

BEGIN

    -- 顯示提示信息, 表示還需要插入多行數據

    RAISERROR('need %d rows', 10, 1, @row) WITH NOWAIT

 

    -- 插入隨機的位編碼數據

    SET ROWCOUNT @row

    INSERT tb SELECT

        id = RIGHT(100000000 + CONVERT(bigint, ABS(CHECKSUM(NEWID()))), 8)

    FROM syscolumns c1, syscolumns c2

    SET @row = @row - @@ROWCOUNT

END

 

-- 顯示插入數據使用的時間

SELECT BeginDate = @dt, EndDate = GETDATE(), 

    Second = DATEDIFF(Second, @dt, GETDATE()),

GO

 

-- 顯示最終的結果記錄是否正確

SELECT COUNT(*) FROM tb

GO

 

-- 刪除測試

DROP TABLE tb

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章