PHP 效能分析中的PDO::rowCount 與COUNT(*)
在PHP 中使用PDO 處理SQL 資料庫時,常見的情況是任務是計算符合特定條件的行數。這可以透過在 SQL 查詢中使用 PDO::rowCount() 或 COUNT(*) 來實現。然而,問題是哪種方法提供更好的性能。
PDO::rowCount() 與COUNT()
PDO::rowCount() 傳回受最後一個SQL 語句影響的行數,可能不總是與傳回的行數相同。另一方面,COUNT()專門擷取滿足查詢條件的行數。
在內部,MySQL伺服器處理COUNT()和PDO::rowCount()的方式不同。 COUNT() 僅為計數結果分配內存,而 PDO::rowCount() 分配內存並準備獲取整個結果集,這會涉及額外的開銷。
一般情況下,在 SQL 中使用 COUNT()查詢比使用 PDO::rowCount() 更有效率,因為它優化了 MySQL 中的處理。
COUNT(*) 與 COUNT(id)
使用時COUNT(*) 和 COUNT(id),基於性能原因,通常首選前者。
COUNT(*) 檢索所有行的計數,包括具有 NULL 值的行。 COUNT(id) 僅計算 id 列具有非 NULL 值的行。
MySQL 有一個最佳化,允許比 COUNT(id) 更有效地評估 COUNT()。這是因為通配符()表示不需要從表中檢索任何實際數據,只需要檢索行數。
結論
為了在PHP 中使用PDO 計算行數時獲得最佳效能,建議在SQL 查詢中使用COUNT() 而非PDO: :rowCount()。另外,在 COUNT() 和 COUNT(id) 之間進行選擇時,由於 MySQL 的最佳化,通常首選 COUNT(*)。
免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。
Copyright© 2022 湘ICP备2022001581号-3