【发布时间】:2012-09-20 19:23:49
【问题描述】:
我正在从 PHP 和 MySQL 的数据库中获取记录并将其显示到 jqgrid 中。
现在我在第一个请求中请求 1 个包含 10 行数据的页面。
为了实现我触发one 查询以获取total number of records 然后计算
totalpages 包含所有总记录。
和second 查询以触发有限的记录,即1 to 10 和下一次11 to 20 等等。
所以问题是每次我必须触发两个查询,一个来获取记录总数,另一个来获取网格的有限行。
是否可以只触发一个查询来实现上述目标?
以正常方式获取记录,上述情况很好,但如果我执行 serch,那么我必须触发两个查询,一个以获取与条件匹配的总行数,另一个只获取满足条件的有限行
更新
好吧,我对访问行的限制取决于记录的总数,所以我看不到任何仅触发一个查询的选项。请看我的 PHP 代码是如何计算限制的
1) 触发查询以访问总记录
$selectMemberData = "SELECT * FROM tbl_member";
//some db code ...
// store the total records value
$count = $dbMemberData->numRows;
if( $count >0 ) {
$total_pages = ceil($count/$limit);
} else {
$total_pages = 0;
}
if ($page > $total_pages) $page=$total_pages;
$start = ( $limit * $page ) - $limit; // do not put $limit*($page - 1)
//Fire another query to fetch limited records
$selectMember = "SELECT * FROM tbl_member LIMIT " .$start.", ". $limit;
所以我担心的是,当我当时使用自动完成搜索时,触发这两个查询会非常昂贵。问题是我依赖总记录来获得start 和end 限制
【问题讨论】:
-
如您所见,我们已经就您在此问题中寻找的确切内容展开了辩论。如果您在评论中让我们知道,这样我们就可以改进我们的答案,或者对某些内容进行投票或将答案标记为正确,因为我真的不想进行这场辩论。