PHP と MySQL のデータベースからレコードを取得し、jqgrid に表示しています。
今、最初のリクエストで10行のデータを含む1ページをリクエストします。
それを達成するために、one
クエリを起動して取得し、すべての合計レコードを含むものtotal number of records
を計算
します。totalpages
限られsecond
たレコード、つまり1 to 10
次回11 to 20
などを起動するクエリ。
したがって、問題は、レコードの総数を取得するために1つと、グリッドの限られた行を取得するために2つのクエリを実行する必要があるたびに発生することです。
上記のことを達成するためにクエリを1つだけ起動することは可能ですか?
通常の方法でレコードをフェッチするには、上記のシナリオは問題ありませんが、検索を実行する場合、基準に一致する行の総数をフェッチするためと、基準を満たす限られた行のみをフェッチするために、2 つのクエリを起動する必要があります。
アップデート
行にアクセスするための私の制限は、レコードの総数に依存するため、1 つのクエリのみを起動するオプションはありません。私の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;
私の懸念は、その時点でオートコンプリート検索を使用すると、2 つのクエリを起動するのにかなりの費用がかかることです。start
問題は、取得およびend
制限する合計レコードに依存していることです