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

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

mysql隨機查詢的優(yōu)化

2024-07-24 12:41:58
字體:
供稿:網(wǎng)友

  mysql隨機查詢最常見的寫法如下:

  1 SELECT * FROM tablename ORDER BY RAND() LIMIT 1

  php手冊上如此解釋:

  About selecting random rows from a MySQL table:

  SELECT * FROM tablename ORDER BY RAND() LIMIT 1

  works for small tables, but once the tables grow larger than 300,000 records or so this will be very slow because MySQL will have to process ALL the entries from the table, order them randomly and then return the first row of the ordered result, and this sorting takes long time. Instead you can do it like this (atleast if you have an auto_increment PK):

  SELECT MIN(id), MAX(id) FROM tablename;

  Fetch the result into $a

  $id=rand($a[0],$a[1]);

  SELECT * FROM tablename WHERE id>=’$id’ LIMIT 1.

  大意是說,如果你用 ORDER BY RAND() 來隨機讀取記錄的話,當數(shù)據(jù)表記錄達到30萬或者更多的時候,mysql將非常吃力.所以php手冊里給了一種方法,結(jié)合php來實現(xiàn):

  首先 SELECT MIN(id), MAX(id) FROM tablename; 取數(shù)據(jù)庫里最大最小值;

  然后 $id=rand($a[0],$a[1]); 產(chǎn)生一個隨機數(shù);

  最后 SELECT * FROM tablename WHERE id>=’$id’ LIMIT 1 將上面產(chǎn)生的隨機數(shù)帶入查詢;

  很顯然上面是最有效率的。

  如果需要多條記錄的話,就循環(huán)查詢,并記得去除重復記錄。

  其它的一些方法可以自行查閱一下google或者百度。

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 茌平县| 华容县| 廊坊市| 高雄市| 木兰县| 六盘水市| 易门县| 海盐县| 宜阳县| 芦溪县| 中卫市| 理塘县| 甘孜县| 鄂伦春自治旗| 霍州市| 商河县| 西青区| 长垣县| 大田县| 惠安县| 通河县| 汉中市| 阿克| 陕西省| 吴忠市| 白城市| 左权县| 广德县| 新乡县| 上林县| 新沂市| 聂荣县| 广宗县| 石棉县| 荆州市| 封丘县| 合作市| 吉木乃县| 马鞍山市| 池州市| 新干县|