自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

MySQL隨機查詢的實現(xiàn)方法

數(shù)據(jù)庫 MySQL
MySQL中的查詢方法非常的多,隨機查詢就是其中之一,下文就教您一個隨機查詢的實現(xiàn)方法,供您參考學習之用。

MySQL隨機查詢是我們經(jīng)常要用到的查詢方式,下面就為您介紹MySQL隨機查詢的方法,先讓我們了解MySQL隨機查詢的基本語法:

  1. SELECT * FROM table_name ORDER BY rand() LIMIT 5;  
  2.  

rand在手冊里是這么說的:
RAND()
RAND(N)
返回在范圍0到1.0內(nèi)的隨機浮點值。如果一個整數(shù)參數(shù)N被指定,它被用作種子值。

  1. mysql> select RAND();   
  2. -> 0.5925   
  3. mysql> select RAND(20);   
  4. -> 0.1811   
  5. mysql> select RAND(20);   
  6. -> 0.1811   
  7. mysql> select RAND();   
  8. -> 0.2079   
  9. mysql> select RAND();   
  10. -> 0.7888   

你不能在一個ORDER BY子句用RAND()值使用列,因為ORDER BY將重復計算列多次。然而在MySQL3.23中,你可以做: SELECT * FROM table_name ORDER BY RAND(),這是有利于得到一個來自SELECT * FROM table1,table2 WHERE a=b AND c<d ORDER BY RAND() LIMIT 1000的集合的隨機樣本。注意在一個WHERE子句里的一個RAND()將在每次WHERE被執(zhí)行時重新評估。

但我試了一下,8千條記錄的表,執(zhí)行一次需要0.08 sec,.慢了些

而使用下列語句:

  1. SELECT *   
  2. FROM table_name AS r1 JOIN   
  3. (SELECT ROUND(RAND() *   
  4. (SELECT MAX(id)   
  5. FROM table_name)) AS id)   
  6. AS r2   
  7. WHERE r1.id >= r2.id   
  8. ORDER BY r1.id ASC   
  9. LIMIT 5;  
  10.  

執(zhí)行效率需要0.02 sec.可惜的是,只有mysql 4.1.*以上才支持這樣的子查詢.


 

【編輯推薦】

MySQL查詢分頁的優(yōu)化

MySQL查詢結(jié)果按某值排序

使用函數(shù)實現(xiàn)MySQL查詢行號

MySQL查詢中的非空問題

MySQL查詢超時問題的解決

 

責任編輯:段燃 來源: 互聯(lián)網(wǎng)
相關(guān)推薦

2010-10-09 15:35:25

MySQL rand函

2010-10-14 16:27:56

MySQL隨機查詢

2010-10-13 16:59:28

mysql查詢

2010-10-15 13:37:08

獲取Mysql數(shù)據(jù)

2010-11-22 15:56:34

Mysql多表查詢

2010-10-14 14:28:03

Mysql多表查詢

2010-10-14 15:07:44

MySQL慢查詢

2010-11-25 14:05:15

MySQL查詢中間記錄

2010-05-31 16:46:40

2010-10-13 17:22:12

MySQL查詢亂碼

2010-10-14 09:15:20

MySQL查詢

2010-11-25 15:43:02

MYSQL查詢重復記錄

2010-11-02 11:08:11

DB2循環(huán)查詢

2010-10-15 10:58:13

Mysql清空表

2010-10-11 11:58:12

2010-11-24 16:53:16

MySQL無重復查詢

2010-05-26 11:00:57

MySQL top n

2010-06-10 17:59:05

2010-11-25 16:29:26

MySQL慢日志查詢

2010-05-18 17:32:33

MySQL查詢優(yōu)化
點贊
收藏

51CTO技術(shù)棧公眾號