应用例子:比如饮料的中奖号码,N多瓶每瓶有个随机号码
o觉得有些地方值得学习:
1.一次性插入尽可能多的记录(不判断是否已经存在该随机数),而不是一次插入一条记录(插入前要判断是否已经存在该随机数).这里重复记录通过设置忽略重复记录的索引来实现的.
"一次性的插入尽可能多的记录"和"忽略重复记录的索引"节约的时间简直太多了....我使用建立索引后的循环插入50W记录都花了2-3个小时....
"一次性的插入尽可能多的记录"和"忽略重复记录的索引"节约的时间简直太多了....我使用建立索引后的循环插入50W记录都花了2-3个小时....
2.SET NOCOUNT ON 这样也可以节约时间 ,但测试发现设置为OFF或ON,其时间几乎相同的都是47或46秒左右
3.这里虽然也使用了循环,但它的循环次数是不固定的.其次数取和每次插入失败的记录数有关.失败的记录数为0的时候,任务也就完成了.我测试需要循环50次左右就可以了.
4.syscolumns和sysobjects两个表的作用是获得足够数量的随机数,两个表的交叉查询记录大于100W就可以了.
--
生成8位长度的100W条记录的随机数,插入数据库.
USE tempdb
GO
CREATE TABLE tb(id char ( 8 ))
CREATE UNIQUE INDEX IX_tb ON tb(id)
WITH IGNORE_DUP_KEY -- --忽略重复记录的索引
USE tempdb
GO
CREATE TABLE tb(id char ( 8 ))
CREATE UNIQUE INDEX IX_tb ON tb(id)
WITH IGNORE_DUP_KEY -- --忽略重复记录的索引