2012-11-09 76 views
0

可能重複:
quick selection of a random row from a large table in mysql
Selecting random rows with MySQL從mysql數據庫中選擇一個隨機記錄,最好的方法?

我目前做一個模塊從MySQL數據庫中提取隨機業務​​記錄和顯示記錄作爲內部的一個「特色業務」模塊。這一切都很好,但如果這是做這件事的最好方式,我不是100%,因爲我聽說它不是太快?目前它非常快速,我應該認爲我會得到的最大業務量大約是100-200,那麼使用下面的方法還是可以的,或者對於那些記錄來說事情會慢很多。

非常感謝:-)

<?php 
$result = mysql_query("SELECT * FROM `zgjzb_chronoforms_data_submitbusiness` ORDER BY  RAND() LIMIT 0,4;"); 
$row = mysql_fetch_array($result); 
echo $row['businessname']; 
?> 

回答

0

你會與多條記錄完全罰款。即使你在成千上萬,你也會沒事的。 Sql查詢幾乎總是以他們的速度給我留下深刻的印象,對於那些記錄很少的查詢,你會沒事的。

+0

感謝您的幫助:-) –

2

看到這個問題:MySQL select 10 random rows from 600K rows fast

有做你想做什麼「更好」的方式。

在100-200的企業,這可能不會有很大的區別。即使在幾千年。你目前的查詢被認爲是「慢」的原因是MySQL正在內存中創建一個臨時表來處理查詢。

所以你應該沒問題,你現在有什麼(好,一段時間)。

P.S. mysql_*函數現在已過時。您應該使用mysqliPDO。這裏是關於差異的PHP Manual