最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

MySQL取出隨機(jī)數(shù)據(jù)

 更新時(shí)間:2008年04月06日 01:25:16   投稿:mdxy-dxy  
MySQL 如何從表中取出隨機(jī)數(shù)據(jù) 以前在群里討論過這個(gè)問題,比較的有意思.mysql的語法真好玩.

他們原來都想用PHP的實(shí)現(xiàn)隨機(jī),但取出多條好像要進(jìn)行兩次以上查詢.

翻了手冊,找到了下面這個(gè)語句,可以完成任務(wù)了,但效率較低

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

rand在手冊里是這么說的:
RAND() 
RAND(N) 
返回在范圍0到1.0內(nèi)的隨機(jī)浮點(diǎn)值。如果一個(gè)整數(shù)參數(shù)N被指定,它被用作種子值。 
mysql> select RAND();
        -> 0.5925
mysql> select RAND(20);
        -> 0.1811
mysql> select RAND(20);
        -> 0.1811
mysql> select RAND();
        -> 0.2079
mysql> select RAND();
        -> 0.7888
你不能在一個(gè)ORDER BY子句用RAND()值使用列,因?yàn)镺RDER BY將重復(fù)計(jì)算列多次。然而在MySQL3.23中,你可以做: SELECT * FROM table_name ORDER BY RAND(),這是有利于得到一個(gè)來自SELECT * FROM table1,table2 WHERE a=b AND c<d ORDER BY RAND() LIMIT 1000的集合的隨機(jī)樣本。注意在一個(gè)WHERE子句里的一個(gè)RAND()將在每次WHERE被執(zhí)行時(shí)重新評估。 

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

后來請教了google,得到如下代碼

SELECT * 
 FROM table_name AS r1 JOIN 
    (SELECT ROUND(RAND() * 
           (SELECT MAX(id) 
            FROM table_name)) AS id) 
    AS r2 
WHERE r1.id >= r2.id 
ORDER BY r1.id ASC 
LIMIT 5; 

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

下面是其它網(wǎng)友的補(bǔ)充:

select id from  zhyx_items   order by rand()  這樣效率太低了

優(yōu)化sql語句之后:

SELECT t1.id 
FROM zhyx_items AS t1 JOIN 
(SELECT ROUND(RAND() *
((SELECT MAX(id) FROM zhyx_items)-(SELECT MIN(id) FROM zhyx_items))+
(SELECT MIN(id) FROM zhyx_items)) AS id) AS t2 
WHERE t1.id >= t2.id 
ORDER BY t1.id LIMIT 0,5;

相關(guān)文章

  • MySQL數(shù)據(jù)庫改名的三種實(shí)現(xiàn)方式

    MySQL數(shù)據(jù)庫改名的三種實(shí)現(xiàn)方式

    這篇文章主要介紹了MySQL數(shù)據(jù)庫改名的三種實(shí)現(xiàn)方式,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-06-06
  • MySQL索引失效的14種場景分享

    MySQL索引失效的14種場景分享

    作為一名后端程序員,經(jīng)常會對慢查詢SQL語句進(jìn)行調(diào)優(yōu),而SQL語句出現(xiàn)慢查詢,很多情況是由于索引失效造成的,本文為大家整理了14種MySQL索引失效的場景,需要的可以參考一下
    2023-05-05
  • SQL實(shí)現(xiàn)LeetCode(181.員工掙得比經(jīng)理多)

    SQL實(shí)現(xiàn)LeetCode(181.員工掙得比經(jīng)理多)

    這篇文章主要介紹了SQL實(shí)現(xiàn)LeetCode(181.員工掙得比經(jīng)理多),本篇文章通過簡要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下
    2021-08-08
  • 如何獲取SqlServer2005表結(jié)構(gòu)(字段,主鍵,外鍵,遞增,描述)

    如何獲取SqlServer2005表結(jié)構(gòu)(字段,主鍵,外鍵,遞增,描述)

    本篇文章是對如何獲取SqlServer2005表結(jié)構(gòu)(字段,主鍵,外鍵,遞增,描述)的方法進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下
    2013-06-06
  • MySQL中大對象的多版本并發(fā)控制詳解

    MySQL中大對象的多版本并發(fā)控制詳解

    這篇文章主要給大家介紹了關(guān)于MySQL中大對象的多版本并發(fā)控制的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家學(xué)習(xí)或者使用mysql具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2018-11-11
  • 論一條select語句在MySQL是怎樣執(zhí)行的

    論一條select語句在MySQL是怎樣執(zhí)行的

    本文將建立一套建立一套MySQL的知識框架,通過討論select語句在MySQL是怎樣執(zhí)行的來展開內(nèi)容,感興趣的小伙伴一起來看下文吧
    2021-08-08
  • MySQL性能壓力基準(zhǔn)測試工具sysbench的使用簡介

    MySQL性能壓力基準(zhǔn)測試工具sysbench的使用簡介

    這篇文章主要介紹了MySQL性能壓力基準(zhǔn)測試工具sysbench的使用簡介,幫助大家更好的理解和學(xué)習(xí)使用MySQL,感興趣的朋友可以了解下
    2021-04-04
  • MySQL數(shù)據(jù)庫必備之條件查詢語句

    MySQL數(shù)據(jù)庫必備之條件查詢語句

    當(dāng)用戶查看表格的大量數(shù)據(jù)是,由于數(shù)據(jù)量過于巨大會導(dǎo)致很難獲取到需要的數(shù)據(jù),在這時(shí),就需要一個(gè)方法,一個(gè)可以通過用戶輸入獲取到用戶需要的數(shù)據(jù)并回填入表格,這就是條件查詢的作用
    2021-10-10
  • Ubuntu16.04 server下配置MySQL,并開啟遠(yuǎn)程連接的方法

    Ubuntu16.04 server下配置MySQL,并開啟遠(yuǎn)程連接的方法

    這篇文章主要介紹了Ubuntu16.04 server下配置MySQL,并開啟遠(yuǎn)程連接的方法,非常具有實(shí)用價(jià)值,需要的朋友可以參考下。
    2017-01-01
  • 深入分析Mysql中l(wèi)imit的用法

    深入分析Mysql中l(wèi)imit的用法

    很久沒用mysql的limit,一時(shí)大意竟然用錯(cuò)了,自認(rèn)為(limit 開始,結(jié)束),其實(shí)錯(cuò)了,正確的應(yīng)該是(limit 偏移量,條數(shù)),為了記住這次錯(cuò)誤,轉(zhuǎn)載一篇limit用法詳解。推薦給大家,希望對大家能夠有所幫助。
    2015-03-03

最新評論

焉耆| 赤峰市| 象山县| 鹤壁市| 治多县| 嘉义市| 德令哈市| 三台县| 康马县| 定州市| 涿州市| 泗水县| 莲花县| 铜川市| 顺昌县| 高陵县| 屯昌县| 安阳市| 含山县| 湛江市| 河津市| 长春市| 甘德县| 榕江县| 万州区| 安塞县| 和龙市| 连平县| 清徐县| 黑河市| 天镇县| 武汉市| 玉林市| 泰安市| 东山县| 二连浩特市| 永靖县| 刚察县| 嘉鱼县| 北流市| 广南县|