相關(guān)關(guān)鍵詞
關(guān)于我們
最新文章
- PHP中opcode緩存簡單用法分析
- thinkPHP控制器變量在模板中的顯示方法示例
- PHP move_uploaded_file() 函數(shù)(將上傳的文件移動到新位置)
- dirname(__FILE__)的含義和應(yīng)用說明
- thinkPHP5框架實(shí)現(xiàn)分頁查詢功能的方法示例
- PHP中單雙號與變量
- PHP獲得當(dāng)日零點(diǎn)時間戳的方法分析
- Laravel ORM對Model::find方法進(jìn)行緩存示例詳解
- PHP讀寫文件高并發(fā)處理操作實(shí)例詳解
- 【CLI】利用Curl下載文件實(shí)時進(jìn)度條顯示的實(shí)現(xiàn)
PHP實(shí)現(xiàn)在數(shù)據(jù)庫百萬條數(shù)據(jù)中隨機(jī)獲取20條記錄的方法
本文實(shí)例講述了PHP實(shí)現(xiàn)在數(shù)據(jù)庫百萬條數(shù)據(jù)中隨機(jī)獲取20條記錄的方法。分享給大家供大家參考,具體如下:
額,為什么要寫這個?
在去某個公司面試時,讓寫個算法出來,當(dāng)時就蒙了,我開發(fā)過程中用到算法的嗎?又不是大數(shù)據(jù)開發(fā),分析。
今天偶然想起來一個坑爹數(shù)據(jù),如:PHP取百萬條數(shù)據(jù)中隨機(jī)20條記錄,當(dāng)時就用的算法。
1.先統(tǒng)計(jì)統(tǒng)計(jì)數(shù)據(jù)庫多少條記錄(這個做個數(shù)據(jù)緩存,如1小時重新統(tǒng)計(jì)一次),
2.根據(jù)總條數(shù),隨機(jī)1次,1次性取出20條記錄(當(dāng)然這個就相當(dāng)于分頁了,要求不高的話,這個最快,我用的就是這個);
還有一種方法,隨機(jī)20次,重復(fù)執(zhí)行20次。
例如:
$sum=800000;//得到總條數(shù) //循環(huán)取數(shù)據(jù) for($i=1;$i<=20;$i++){ $offset=mt_rand(1,$sum); //控制重復(fù)對比的,請自行實(shí)現(xiàn) //數(shù)據(jù)庫取數(shù)據(jù)的,請自行實(shí)現(xiàn) $sql="select * from table limit $offset,1"; echo $sql; }