注意:沒有索引覆蓋的狀況下count()
方法性能更高。10倍左右php
使用LIMIT
查詢時,能夠經過,sql
使用SQL_CALC_FOUND_ROWS
標記sql語句,數組
使用FOUND_ROWS
執行計算總行數,性能
使用pdo
下的nextRowset
方法判斷,配合do while
循環數據便可。fetch
注意:不帶LIMIT
時,可能會出現不一樣的結果。code
// sql 語句拼寫 // SQL_CALC_FOUND_ROWS 標記sql語句,用於統計總行數 // FOUND_ROWS() 計算總行數 $sql = " SELECT SQL_CALC_FOUND_ROWS o.Price, o.OrderId, o.ProductId, o.Amount, p.`Name`, FROM `order` AS o LEFT JOIN product AS p ON p.Id = o.ProductId WHERE o.ConfirmationNotice = 2 ORDER BY o.`CreationTime` DESC LIMIT 0,10; SELECT FOUND_ROWS() AS total_rows; "; // 執行語句 $pdo = $db->query($sql); $arr = array(); // 使用 pdo 下的 nextRowset 方法進行判斷 // do while 循環返回的數組 do { $rowset = $pdo->fetchAll(); // 判斷自定義總行數關鍵字 if (count($rowset) == 1 && $rowset[0]['total_rows']){ array_push($arr, intval($rowset[0]['total_rows'])); }else{ array_push($arr, $rowset); } } while ($pdo->nextRowset());