日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 运维知识 > 数据库 >内容正文

数据库

从MySQL随机选取数据

發(fā)布時(shí)間:2024/4/13 数据库 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 从MySQL随机选取数据 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

--從MySQL隨機(jī)選取數(shù)據(jù)

-------------------------2014/06/23

?

從MySQL隨機(jī)選取數(shù)據(jù)最簡(jiǎn)單的辦法就是使用”O(jiān)RDER BY RAND()”;

方案一:

SELECT * FROM `table` ORDER BY RAND() LIMIT 0,1;

這種方法的問題就是非常慢。原因是因?yàn)镸ySQL會(huì)創(chuàng)建一張零時(shí)表來保存所有的結(jié)果集,然后給每個(gè)結(jié)果一個(gè)隨機(jī)索引,然后再排序并返回。

有幾個(gè)方法可以讓它快起來。

基本思想就是先獲取一個(gè)隨機(jī)數(shù),然后使用這個(gè)隨機(jī)數(shù)來獲取指定的行。

由于所有的行都有一個(gè)唯一的id,我們將只取最小和最大id之間的隨機(jī)數(shù),然后獲取id為這個(gè)數(shù)行。為了讓這個(gè)方法當(dāng)id不連續(xù)時(shí)也能有效,我們?cè)谧罱K的查詢里使用”>=”代替”=”。

為了獲取整張表的最小和最大id,我們使用MAX()和MIN()兩個(gè)聚合函數(shù)。這兩個(gè)方法會(huì)返回指定組里的最大和最小值。在這里這個(gè)組就是我們表里的所有id字段值。

方案二:

$range_result = mysql_query( " SELECT MAX(`id`) AS max_id , MIN(`id`) AS min_id FROM `table` "); $range_row = mysql_fetch_object( $range_result ); $random = mt_rand( $range_row->min_id , $range_row->max_id ); $result = mysql_query( " SELECT * FROM `table` WHERE `id` >= $random LIMIT 0,1 ");

就像我們剛才提到的,這個(gè)方法會(huì)用唯一的id值限制表的每一行。那么,如果不是這樣情況怎么辦?

下面這個(gè)方案是使用了MySQL的LIMIT子句。LIMIT接收兩個(gè)參數(shù)值。第一個(gè)參數(shù)指定了返回結(jié)果第一行的偏移量,第二個(gè)參數(shù)指定了返回結(jié)果的最大行數(shù)。偏移量指定第一行是0而不是1。

為了計(jì)算第一行的偏移量,我們使用MySQL的RAND()方法從0到1之間生成一個(gè)隨機(jī)數(shù)。然后我們把這個(gè)數(shù)字跟我們用COUNT()方法獲取倒的表記錄數(shù)相乘。由于LIMIT的參數(shù)必須是int型而不能是float,我們使用FLOOR()來處理結(jié)果。FLOOR()會(huì)計(jì)算小于表達(dá)式的最大值。最終的代碼就是這樣:

方案三:

$offset_result = mysql_query( " SELECT FLOOR(RAND() * COUNT(*)) AS `offset` FROM `table` "); $offset_row = mysql_fetch_object( $offset_result ); $offset = $offset_row->offset; $result = mysql_query( " SELECT * FROM `table` LIMIT $offset, 1 " );

在MySQL 4.1以后我們可以使用子子查詢合并上面兩個(gè)方法:

方案四:

SELECT * FROM `table` WHERE id >= (SELECT FLOOR( MAX(id) * RAND()) FROM `table` ) ORDER BY id LIMIT 1;

這個(gè)方案跟方案二有同樣的弱點(diǎn),只對(duì)有唯一id值的表有效。

記住我們最初尋找選擇隨機(jī)行的替代方法的原因,速度!所以,這些方案的在執(zhí)行時(shí)間上的比較會(huì)怎么樣?我不會(huì)指出硬件和軟件配置或者給出具體的數(shù)字。大概的結(jié)果是這樣的:

  • 最慢的是解決方案一(我們假定它用了100%的時(shí)間)。
  • 方案二用了79%
  • 方案三 - 13%
  • 方案四 - 16%

方案三勝出!

總結(jié)

以上是生活随笔為你收集整理的从MySQL随机选取数据的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 国产视频一区在线播放 | 欧美性猛交乱大交 | 黄色大片黄色大片 | 永久免费看片 | 精品成人久久 | 久久久久久久人妻无码中文字幕爆 | 波多野结衣一区在线 | 成人污网站 | 国语对白少妇spa私密按摩 | 日韩av高清在线观看 | 日本黄页网址 | 北条麻纪在线观看aⅴ | 在线观看jizz | 国产一二在线 | 欧美高清大白屁股ass18 | 欧洲精品在线播放 | 亚洲综合免费观看高清完整版 | 一区二区三区久久久久 | www.色哟哟| 99精品一区二区三区无码吞精 | 尤物影院在线观看 | 337p日本大胆噜噜噜噜 | 日本免费不卡视频 | 日本夫妻性生活视频 | 国产日韩欧美激情 | 自拍超碰 | 婷婷激情影院 | 国产一区二区av在线 | 黄瓜视频色 | 亚洲黄色大片 | 欧美打屁股| 天堂网中文在线 | 蜜桃视频无码区在线观看 | 7x7x7x人成影视| 亚日韩欧美 | 欧美三级不卡 | 国产毛片欧美毛片久久久 | av片免费观看 | 欧美双性人妖o0 | 人人看av| 精品无码人妻一区二区免费蜜桃 | 国产免费一区二区三区视频 | 四虎影视大全 | 337p日本大胆噜噜噜鲁 | 偷拍网亚洲 | 狠狠操导航 | 粉嫩av一区二区三区 | 成人午夜免费电影 | 日韩三区在线观看 | 久艹在线观看视频 | 69中国xxxxxxxxx96| 国产女人毛片 | 蜜桃又黄又粗又爽av免 | 粉嫩一区二区三区 | 午夜特级毛片 | 国产精品性 | 日本人的性生活视频 | av网站有哪些 | 亚洲手机看片 | 精品无码久久久久久久久 | 禁果av一区二区三区 | 伊人色婷婷 | 日日夜夜一区 | 成人免费视频观看视频 | 人人澡超碰碰 | 五月天青青草 | 亚洲AV无码一区二区三区少妇 | 久久国产精品久久久久久电车 | 在线中文字幕一区二区 | 中文在线天堂网 | 久久黄色一级片 | 超碰在线99| 精品视频一区二区三区四区五区 | 蜜臀aⅴ国产精品久久久国产老师 | 成人黄色av网站 | 综合亚洲网 | 日本久久免费 | 亚洲欧美日本一区 | 毛片aaa| 国产精久久久久久 | 免费成人黄色网 | 国产处女 | 一级免费a | 亚洲黑丝在线 | 色婷婷久久一区二区三区麻豆 | 欧美在线免费看 | 国产人人干 | 久久欧洲| 六月综合网 | 91小宝寻花一区二区三区 | 国产一级在线观看视频 | 玖操| 色亚洲欧美 | 精品成人在线观看 | 免费看污的网站 | 亚洲人视频在线观看 | 都市激情久久 | 夜夜摸夜夜操 | 特黄a级片|