仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 734|回复: 8
打印 上一主题 下一主题

[学习教程] MYSQL网页设计怎样疾速天生100万不反复的8位编号

[复制链接]
再现理想 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-16 22:19:30 | 只看该作者 回帖奖励 |正序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

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

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-11-11 06:39

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表