/*1. 如何生成8位随机数,生成的数越随机,重复的可能性当然越小
2. 控制不重复
3. 考虑性能
针对这个问题,我写了如下的示例来解决,希望能为有这类需求的人提供指导
*/
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
–方法1直接插入
INSERT tb SELECT id = RIGHT(100000000 + CONVERT(bigint, ABS(CHECKSUM(NEWID()))), 8)
–方法2用参数
–declare @id char(8)
–SELECT @id = RIGHT(100000000 + CONVERT(bigint, ABS(CHECKSUM(NEWID()))), 8)
–insert into tb(字段1) values(@id)
FROM syscolumns c1,syscolumns c2
SET @row = @row - @@ROWCOUNT
END
–显示插入数据使用的时间
SELECT Begin