5
隨着儘管我取單行下面的代碼 - 整個數據集被下載(這需要幾秒鐘):如何使PDO(pdo_pgsql)懶洋洋地讀取行
$query = 'SELECT * FROM xxx WHERE id > :position ORDER BY id';
$stmt = $db->prepare($query);
$stmt->execute([
':position' => $position,
]);
while ($row = $stmt->fetch(\PDO::FETCH_ASSOC)) {
break;
}
我試圖找到一個PDO中的選項會使其按需(或通過合理的批次)提取行,但未能這樣做,至少我無法在PDO文檔中找到它。
給定查詢的Postgresql能夠按照EXPLAIN ANALYZE
服務於0.28ms
中的第一行。
而且我的目標是儘可能快地開始處理行,即使進一步批量的行也會帶來一些網絡開銷。
我如何確定它獲取所有行:
- 間接:它需要同時
break
第一行後,或在整個數據集進行迭代 - 我捕捉到的交通與
tcpdump
和檢查它是否獲取所有行。
所以,問題是:是否有可能使PDO
在按需模式下逐行(或一些合理的小批量)獲取?
我不確定,但你看過這個(PDO :: FETCH_LAZY標誌):http://stackoverflow.com/qu estions/14462156/php-pdofetch-lazy-not-creating-object-variable-names-as-they-are-access-from和PHP doc:http://php.net/manual/en/pdostatement.fetch.php – pah
@threadp'FETCH_LAZY'是一個誤導性的名字,它不會做它聽起來應該的:-D – zerkms
對,我剛剛從你的答案中得到了答案:)謝謝 – pah