[英]SQL select by using limit or using program to fetch special records
我正在使用php從數據庫獲取特殊記錄。
哪一個更好?
1。
Select * From [table] Limit 50000, 10;
while($row = $stmt->fetch()){
//save in array, total 10 times
}
或2。
Select * From [table];
$start = 50000;
$length = 10;
while($row = $stmt->fetch()){
if($i < $start+$length && $j >=$start){
//save in array, total 50010 times
}
}
在這種情況下,我應該使用哪一個?
哪一個使用的DB的資源較少?
哪一個更好?
太含糊:什么是“更好”?
哪一個使用的DB的資源較少?
第一種方法會使您的生活變得更好。 選擇所需的數據少而不需要多的數據非常有效。 選擇整個表將迫使您的腳本使用更多的內存,因為所有這些數據都需要保持活動狀態
您將獲得的最佳答案是: 測試! 您可以通過多種方式多次運行查詢,並親自查看。 只需使用SELECT SQL_NO_CACHE...
而不是通用的SELECT...
即可強制DB從頭開始工作。 測量運行查詢和處理結果所需的時間
function wayOne(){
// execute your 1st query and loop through results
}
function wayTwo(){
// execute 2nd query and loop through results
}
//Measures # of milliseconds it takes to execute another function
function timeThis(callable $callback){
$start_time = microtime();
call_user_func($callback);
$microsecs = microtime()-$start_time; //duration in microseconds
return round($microsecs*1000);//duration in milliseconds
}
$wayOneTime = timeThis('wayOne');
$wayTwoTime = timeThis('wayTwo');
然后,您可以比較兩次。 通常(並非總是),花費大量時間的過程使用較少的資源
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.