PHP 早期 MySQL 擴展(已棄用)中,兩種查詢模式的根本區別在於結果集緩衝策略:
mysql_data_seek()、mysql_num_rows()、隨機存取行。mysql_data_seek()、mysql_num_rows()(需遍歷計數)。$result = mysql_unbuffered_query($sql, $conn);
mysql_data_seek($result, 0); // 警告:不能在 unbuffered 結果上使用
PHP 5.5+ 棄用 mysql_* 函數,請改用 PDO 或 mysqli:
PDO::MYSQL_ATTR_USE_BUFFERED_QUERY 控制緩衝模式。mysqli::use_result()(非緩衝)vs mysqli::store_result()(緩衝)。| 特性 | mysql_query | mysql_unbuffered_query |
|---|---|---|
| 記憶體佔用 | 高(全量緩存) | 低(流式) |
| 隨機存取 | 支援 | 不支援 |
| 併發查詢 | 同一連接可執行其他查詢 | 讀取期間阻塞其他查詢 |
| 適用場景 | 小結果集、需多次遍歷 | 大結果集、單次順序讀取 |