仓酷云

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

[学习教程] 绝无经由的MySQL完成表中掏出随机数据

[复制链接]
简单生活 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-16 20:14:36 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
通过支付一定费用,客户可以得到优先的24/7支持,访问内容丰富的在线知识库和联系一个专门的技术负责经理。  之前在群里会商过这个成绩,对照的成心思.MySQL的语法真好玩.他们本来都想用php的完成随机,但掏出多条仿佛要举行两次以上查询.翻了手册,找到了上面这个语句,能够完成义务了。
SELECT*FROMtable_nameORDERBYrand()LIMIT5;
  rand在手册里是这么说的:
  RAND()
  RAND(N)
  前往在局限0到1.0内的随机浮点值。假如一个整数参数N被指定,它被用作种子值。
mysql>selectRAND();
->0.5925
mysql>selectRAND(20);
->0.1811
mysql>selectRAND(20);
->0.1811
mysql>selectRAND();
->0.2079
mysql>selectRAND();
->0.7888
  你不克不及在一个ORDERBY子句用RAND()值利用列,由于ORDERBY将反复盘算列屡次。但是在MySQL3.23中,你能够做:SELECT*FROMtable_nameORDERBYRAND(),这是有益于失掉一个来自SELECT*FROMtable1,table2WHEREa=bANDc<dORDERBYRAND()LIMIT1000的汇合的随机样本。注重在一个WHERE子句里的一个RAND()将在每次WHERE被实行时从头评价。
  但我试了一下,8千笔记录的表,实行一次必要0.08sec,.慢了些
  厥后就教了google,失掉以下代码
SELECT*
FROMtable_nameASr1JOIN
(SELECTROUND(RAND()*
(SELECTMAX(id)
FROMtable_name))ASid)
ASr2
WHEREr1.id>=r2.id
ORDERBYr1.idASC
LIMIT5;
  实行效力必要0.02sec.惋惜的是,只要mysql4.1.*以上才撑持如许的子查询.
即使对于MySQL的商业化的企业版来说,也没有高昂的许可证成本,当你将其与像甲骨文和微软之类的大型专有商业数据库比较的话。
深爱那片海 该用户已被删除
沙发
发表于 2015-1-18 19:10:23 | 只看该作者
对于微软系列的东西除了一遍遍尝试还真没有太好的办法
蒙在股里 该用户已被删除
板凳
发表于 2015-1-25 08:39:42 | 只看该作者
分区表是个亮点!从分区表也能看出微软要做大作强SQLServer的信心。资料很多,这里不详细说。但是重点了解的是:现在的SQLServer2005的表,都是默认为分区表的。因为它要支持滑动窗口的这个特性。这种特性对历史数据和实时数据的处理是很有帮助的。
精灵巫婆 该用户已被删除
地板
发表于 2015-2-2 19:05:04 | 只看该作者
varchar(max)\\\\nvarchar(max)类型的引入大大的提高了编程的效率,可以使用字符串函数对CLOB类型进行操作,这是一个亮点。
admin 该用户已被删除
5#
发表于 2015-2-8 04:42:25 | 只看该作者
不过话说回来了,绝大多数的性能优化准则与对sqlserver存储的结构理解息息相关
飘灵儿 该用户已被删除
6#
发表于 2015-2-24 16:45:45 | 只看该作者
where子句的作用是在对查询结果进行分组前,将不符合where条件的行去掉,即在分组之前过滤数据,条件中不能包含聚组函数,使用where条件显示特定的行。
透明 该用户已被删除
7#
发表于 2015-3-7 12:55:08 | 只看该作者
对递归类的树遍历很有帮助。个人感觉这个真是太棒了!阅读清晰,非常有时代感。
8#
发表于 2015-3-15 06:58:45 | 只看该作者
所以你总能得到相应的升级版本,来满足你的需求。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2024-12-22 20:14

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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