仓酷云

标题: MYSQL网页设计怎样疾速天生100万不反复的8位编号 [打印本页]

作者: 再现理想    时间: 2015-1-16 22:19
标题: MYSQL网页设计怎样疾速天生100万不反复的8位编号
RDBMS并非没有局限性。它们难以扩展,需要大量的资源来配置和维护,比如时间、硬件和人力。同样,它们往往遵循峰值性能模型,这就要求系统按照峰值容量来配置可用性,而不考虑典型的数据使用情况。比来在论坛看到有人问,怎样疾速天生100万不反复的8位编号,关于这个成绩,有几点是必要注重的:
1.怎样天生8位随机数,天生的数越随机,反复的大概性固然越小
2.把持不反复
3.思索功能
针对这个成绩,我写了以下的示例来办理,但愿能为有这类需求的人供应引导

天生100万条8位不反复数据的示例
USEtempdb
GO

--创立测试表
CREATETABLEtb(idchar(8))

--创立用于主动过滤反复值的独一索引
CREATEUNIQUEINDEXIX_tbONtb(id)
WITHIGNORE_DUP_KEY
GO

--测试数据拔出的处置工夫,纪录入手下手处置的工夫点
DECLARE@dtdatetime
SET@dt=GETDATE()

--拔出随机数据
SETNOCOUNTON
DECLARE@rowint
SET@row=1000000--设置总纪录数
WHILE@row>0
BEGIN
--显现提醒信息,暗示还必要拔出多行数据
RAISERROR(need%drows,10,1,@row)WITHNOWAIT

--拔出随机的位编码数据
SETROWCOUNT@row
INSERTtbSELECT
id=RIGHT(100000000+CONVERT(bigint,ABS(CHECKSUM(NEWID()))),8)
FROMsyscolumnsc1,syscolumnsc2
SET@row=@row-@@ROWCOUNT
END

--显现拔出数据利用的工夫
SELECTBeginDate=@dt,EndDate=GETDATE(),
Second=DATEDIFF(Second,@dt,GETDATE()),
GO

--显现终极的了局纪录是不是准确
SELECTCOUNT(*)FROMtb
GO

--删除测试
DROPTABLEtb

办理顶用到的技能:
1.把持发生的数据不反复,间接利用独一索引中的IGNORE_DUP_KEY选项,使拔出数据中的反复值主动过滤,制止手工处置反复
2.利用CHECKSUM共同NEWID()函数,使天生的数据只管随机,一样平常天生随机数会思索利用RAND()函数,但这个函数是发生伪随机值,用上面的语句测试一下,会发明发生的数据全体是一样的,这不合用于想批量天生多个随机数,而NEWID()函数天生的是GUID,基础上不会有反复的,再经由过程CHECKSUM将其转化成数字,如许发生反复的大概性会对照小
SELECTTOP10
RAND()
FROMsysobjects
3.在效力把持,利用轮回+批量天生的体例,而不是传统的逐一天生。在SQLServer中,每一个拔出语句城市有一个外部的事件处置,假如逐条拔出,则事件的开支太年夜,效力必将十分低;不思索一次性天生100万数据,一则由于天生的数据大概有反复的,往失落反复就没有100万了,二则一次性天生100万数据,损耗的内存和CPU资本也很高,一样平常的电脑大概接受不住.


列举选择MySQL的理由的最困难的地方在于,如何对这些理由进行排序。MySQL学习教程这就如同我们经常争论的故事:先有鸡还是先有蛋?
作者: 若相依    时间: 2015-1-19 08:42
对于数据库来说,查询是数据库的灵魂,那么SQL查询效率究竟效率如何呢?下文将带对SQL查询的相关问题进行讨论,供您参考。
作者: 金色的骷髅    时间: 2015-1-26 20:23
光写几个SQL实在叫无知。
作者: 小妖女    时间: 2015-2-4 20:51
在select语句中可以使用groupby子句将行划分成较小的组,然后,使用聚组函数返回每一个组的汇总信息,另外,可以使用having子句限制返回的结果集。
作者: 第二个灵魂    时间: 2015-2-10 09:32
现在是在考虑:如果写到服务器端,我一下搞他个10个存储过程导过去,那久之服务器不就成垃圾箱了吗?即便优化了我的中间层.
作者: 兰色精灵    时间: 2015-3-1 08:36
发几份SQL课件,以飨阅者
作者: 透明    时间: 2015-3-10 13:11
一个百万级别的基本信息表A,一个百万级别的详细记录表B,A中有个身份证id,B中也有身份id;先要找出A中在B的详细记录。
作者: 海妖    时间: 2015-3-17 08:10
外键的级联更能扩展可能大部分的同行在设计OLTP系统的时候都不愿意建立外键,都是通过程序来控制父子数据的完整性。
作者: 若天明    时间: 2015-3-24 04:02
SQLServer的异构移植功能个人感觉最好了。(如果对比过SQLServer的链接服务器和Oracle的透明网关的朋友会发现SQLServer的sp_addlinkedserver(openquery)异构数据库系列比Oracle真是强太多了。)




欢迎光临 仓酷云 (http://ckuyun.com/) Powered by Discuz! X3.2