|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
“对于MySQL数据库,无论是在开发方面,还是支持方面,现在有大量强大的MySQL学习教程可以选择。每一个新手开发者可以轻松地使用MySQL数据库进行开发。你不克不及在一个ORDERBY子句用RAND()值利用列,由于ORDERBY将反复盘算列屡次。但是在MySQL3.23中,你能够做:SELECT*FROMtable_nameORDERBYRAND(),这是有益于失掉一个来自SELECT*FROMtable1,table2WHEREa=bANDc 完成随机,从手册中找到了上面这个语句,能够完成义务:
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
注重在一个WHERE子句里的一个RAND()将在每次WHERE被实行时从头评价。
但试了一下,8千笔记录的表,实行一次必要0.08sec,慢了些。厥后就教了google,失掉以下代码:
SELECT*FROMtable_nameASr1JOIN(SELECTROUND(RAND()*(SELECTMAX(id)FROMtable_name))ASid)ASr2WHEREr1.id>=r2.idORDERBYr1.idASCLIMIT5;
实行效力必要0.02sec.惋惜的是,只要mysql4.1.*以上才撑持如许的子查询.
RDBMS并非没有局限性。它们难以扩展,需要大量的资源来配置和维护,比如时间、硬件和人力。同样,它们往往遵循峰值性能模型,这就要求系统按照峰值容量来配置可用性,而不考虑典型的数据使用情况。 |
|