php mysql随机记录,php – 从MySQL中选择可变数量的随机记录
我想從數據庫中顯示一條隨機記錄.如果我選擇,我希望能夠顯示X個隨機記錄.因此,我需要從隨機選擇的ID列表中選擇前X個記錄
(除非地球尺寸急劇增加,否則將不會有超過500條記錄可供選擇.目前有66種可能.)
這個功能有效,但我怎樣才能讓它變得更好?
/***************************************************/
/* RandomSite */
//****************/
// Returns an array of random site IDs or NULL
/***************************************************/
function RandomSite($intNumberofSites = 1) {
$arrOutput = NULL;
//open the database
GetDatabaseConnection('dev');
//inefficient
//$strSQL = "SELECT id FROM site_info WHERE major <> 0 ORDER BY RAND() LIMIT ".$intNumberofSites.";";
//Not wonderfully random
//$strSQL = "SELECT id FROM site_info WHERE major <> 0 AND id >= (SELECT FLOOR( COUNT(*) * RAND()) FROM site_info ) ORDER BY id LIMIT ".$intNumberofSites.";";
//Manual selection from available pool of candidates ?? Can I do this better ??
$strSQL = "SELECT id FROM site_info WHERE major <> 0;";
if (is_numeric($intNumberofSites))
{
//excute my query
$result = @mysql_query($strSQL);
$i=-1;
//create an array I can work with ?? Can I do this better ??
while ($row = mysql_fetch_array($result, MYSQL_NUM))
{
$arrResult[$i++] = $row[0];
}
//mix them up
shuffle($arrResult);
//take the first X number of results ?? Can I do this better ??
for ($i=0;$i
{
$arrOutput[$i] = $arrResult[$i];
}
}
return $arrOutput;
}
更新問題:
我知道ORDER BY RAND(),我只是不想使用它,因為有傳言說它不是最好的縮放和性能.我對我的代碼過于挑剔.我的作品ORDER BY RAND()有效,但我可以做得更好嗎?
更多更新
ID中有漏洞.沒有大量的流失,但任何流失都需要得到我們團隊的批準,因此可以處理轉儲任何緩存.
謝謝你的回復!
總結
以上是生活随笔為你收集整理的php mysql随机记录,php – 从MySQL中选择可变数量的随机记录的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: php三表关联,详解Yii2 hasOn
- 下一篇: morlet小波matlab代码,mor