我发现了一些类似的,但不是我需要的:
- 做工作但不使用PDO
- 使用PDO但不使用LIMIT
背景信息:我正在使用带有PDO类的MySQL
目前,我正在使用以下两个查询:
获取一页数据:
$sql = "SELECT * FROM `tab`
WHERE `condition` = :condition
LIMIT $page_size OFFSET $offset";
$array = array('condition'=>$condition);
$mysql = $pdo->prepare($sql);
$mysql->execute($array);
要获取行总数:
$sql = "SELECT COUNT(*) FROM `tab`
WHERE `condition` = :condition";
$array = array('condition'=>$condition);
$mysql = $pdo->prepare($sql);
$mysql->execute($array);
您可以使用SQL_CALC_FOUND_ROWS
命令告诉MySQL返回匹配记录的总数
$sql = "SELECT SQL_CALC_FOUND_ROWS * FROM `tab`
WHERE `condition` = :condition
LIMIT $page_size OFFSET $offset";
要获得找到的总行数,可以运行此查询
SELECT FOUND_ROWS()
但是,执行两个单独的查询通常比使用SQL_CALC_FOUND_ROWS
更快。以下是解释的基准
你可以在这里阅读更多关于的信息