应用例子:比如饮料的中奖号码,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
--
--忽略重复记录的索引
![](https://i-blog.csdnimg.cn/blog_migrate/f0cd6c7f9e7ae96feae062cb48f670f0.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/f0cd6c7f9e7ae96feae062cb48f670f0.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/f0cd6c7f9e7ae96feae062cb48f670f0.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/f0cd6c7f9e7ae96feae062cb48f670f0.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/f0cd6c7f9e7ae96feae062cb48f670f0.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/f0cd6c7f9e7ae96feae062cb48f670f0.gif)