国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 數(shù)據(jù)庫(kù) > MySQL > 正文

從mysql數(shù)據(jù)表中隨機(jī)取出一條記錄

2024-07-24 12:36:40
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

mysql中隨機(jī)記錄的函數(shù)是rand()這個(gè)函數(shù)對(duì)于幾百條數(shù)據(jù)通常是看不出問(wèn)題,但上萬(wàn)了就會(huì)有些問(wèn)題了,下面我們一起來(lái)看一朋友面試題得出來(lái)的一些更好的辦法.

今天去蘇州的一家網(wǎng)絡(luò)建設(shè)公司面試,老板給了我一道題目:php中如何從數(shù)據(jù)表products中隨機(jī)取出一條數(shù)據(jù)?

當(dāng)然最后我的一段代碼有錯(cuò)誤的,并不是真正意義上的隨機(jī)取數(shù)據(jù),回到家,趕快百度,這才知道了如何隨機(jī)取數(shù)據(jù)..

其余代碼不多說(shuō),這里就告訴你這句核心查找數(shù)據(jù)表代碼:

select * from 表名 order by rand( ) limit 1;//此處的1就是取出數(shù)據(jù)的條數(shù).

但這樣取數(shù)據(jù)網(wǎng)上有人說(shuō)效率非常差的,那么要如何改進(jìn)呢,搜索Google,網(wǎng)上基本上都是查詢max(id) * rand()來(lái)隨機(jī)獲取數(shù)據(jù),代碼如下:

  1. SELECT * 
  2. FROM `tableAS t1 JOIN (SELECT ROUND(RAND() * (SELECT MAX(id) FROM `table`)) AS id) AS t2 
  3. WHERE t1.id >= t2.id 
  4. ORDER BY t1.id ASC LIMIT 5; 

但是這樣獲得的是5條連續(xù)的記錄,解決辦法只能是每次查詢一條,查詢5次,但這個(gè)又不能滿足我的要求了,我要一次找?guī)讞l,高效寫(xiě)法,代碼如下:

  1. SELECT * FROM user  WHERE userId >= ((SELECT MAX(userId) FROM user )-(SELECT MIN(userId) FROM user )) * RAND() + (SELECT MIN(userId) FROM user )  LIMIT 5//開(kāi)源代碼Vevb.com 

這樣測(cè)試發(fā)現(xiàn)滿足了我的要求同時(shí)測(cè)試10W數(shù)據(jù)也只要0.0幾秒非常的快.

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 桑植县| 万宁市| 徐州市| 满城县| 松滋市| 鹤壁市| 聂荣县| 同心县| 全椒县| 莲花县| 白河县| 弋阳县| 霍城县| 阳信县| 四子王旗| 岫岩| 邹城市| 大名县| 霍州市| 锡林浩特市| 抚顺市| 马边| 宣威市| 清丰县| 秭归县| 昆山市| 岫岩| 永州市| 保德县| 深圳市| 开远市| 临江市| 陆良县| 宽城| 南木林县| 定远县| 刚察县| 双桥区| 铜鼓县| 尖扎县| 如皋市|