注意:没有索引覆盖的状况下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());