一般網站常會用到隨機或亂數取值,比方這樣的功能:隨選文章、亂數廣告、隨機推薦會員等。而就程式面來看就是要在資料庫中,任意取10個或N個資料列出來使用。
SELECT * FROM `table` ORDER BY RAND() LIMIT 0,10;
方法2(執行速度79)
$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 ");
方法3(執行速度13)
$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 " );
方法4(執行速度16)
SELECT * FROM `table` WHERE id >= (SELECT FLOOR( MAX(id) * RAND()) FROM `table` ) ORDER BY id LIMIT 1;
就速度上來說,方法2,3,4的確較方法1大幅提升,但如果看到這四個方法的結果,你會發現,方法1才是真正的亂數取值
大部份有寫過程式的人都能看出端倪(不贅述,看結果)
方法2,3,4的三次可能結果(以1~400筆資料,取5列為例):
53,54,55,56,57
100,101,102,103,105
378,379,380,381,382
方法1的三次可能結果:
32,105,87,389,48
209,65,182,98,338
27,68,265,128,111
在Google及Yahoo找資料,已成為許多人每天必行的公事。「網路」的無遠弗屆,造就了一個世界級的知識寶庫,著實讓我受益良多。
設立此部落格除用做網路行銷、學習記事與知識管理外,希望也能做些回饋和經驗分享,如果有人能從這裡的文章得到一點幫助就好了...
網站生日:2008/09/16 年紀:41個多月
寫下留言