データベースページネーションクエリを実行するとき、通常、大量のデータを表示する必要があるシナリオに遭遇します。すべてのデータを一度にページにロードすると、ページがゆっくりとロードされるか、タイムアウトさえも続く可能性があります。この問題を解決するために、ページングテクノロジーを使用してバッチにデータをロードできます。PHPのarray_chunk関数は、SQLクエリの結果を効果的に処理するのに役立つ非常に効果的なツールです。
この記事では、PHPのarray_chunk関数を使用して、ページングクエリの実装プロセスを最適化する方法を紹介します。
Array_chunkは、大規模な配列を複数の小さなアレイに分割するために使用されるPHPの組み込み関数です。基本的な使用法は次のとおりです。
array_chunk(array $array, int $length, bool $preserve_keys = false): array
$配列:分割する配列。
$の長さ:各小さな配列の長さ。
$ preserve_keys :元の配列のキー名を保持するかどうか(デフォルトはfalse )。
この関数を通じて、大きなデータセットを複数のページの配列に分割し、一度に1ページのデータを返します。
データベースには、大量のユーザーデータを含むユーザーテーブル(ユーザー)があるとします。このデータをページに表示したいと思います。通常の練習は、データベースからすべてのレコードを一度に照会し、バックエンドでページングロジックを処理することです。ただし、特にデータボリュームが非常に大きい場合は、パフォーマンスの問題を引き起こす可能性があります。
したがって、 array_chunk関数を使用して、クエリ結果を複数のページに分割してパフォーマンスを最適化できます。 SQLクエリの結果をArray_Chunkを介して複数の配列に分割し、ページごとにデータを表示します。
Array_Chunk関数を使用してSQLクエリの結果をページングする方法を示す簡単な例を次に示します。
<?php
// データベースに接続します
$mysqli = new mysqli("localhost", "username", "password", "database");
// 接続を確認してください
if ($mysqli->connect_error) {
die("接続に失敗しました: " . $mysqli->connect_error);
}
// ページごとに表示されるレコードの数を設定します
$items_per_page = 10;
// 現在のページ番号を取得します,デフォルトはです 1
$page = isset($_GET['page']) ? (int)$_GET['page'] : 1;
$offset = ($page - 1) * $items_per_page;
// クエリデータ
$query = "SELECT * FROM users LIMIT $offset, $items_per_page";
$result = $mysqli->query($query);
// クエリが成功した場合
if ($result->num_rows > 0) {
// クエリの結果を配列に保存します
$data = [];
while ($row = $result->fetch_assoc()) {
$data[] = $row;
}
// 使用 array_chunk クエリの結果をページあたりのデータの量で分割します
$chunks = array_chunk($data, $items_per_page);
// 現在のページのデータ表示を取得します
$current_page_data = $chunks[$page - 1];
// 現在のページのデータを表示します
foreach ($current_page_data as $user) {
echo "ユーザー名: " . $user['username'] . "<br>";
echo "郵便: " . $user['email'] . "<br>";
echo "<hr>";
}
} else {
echo "ユーザーデータは見つかりません。";
}
// ページネーションリンク
$total_pages = ceil(count($data) / $items_per_page);
echo "<div>一般 " . $total_pages . " ページ</div>";
for ($i = 1; $i <= $total_pages; $i++) {
echo "<a href='?page=$i'>第 $i ページ</a> ";
}
$mysqli->close();
?>
array_chunkを使用することにより、クエリの結果をページごとに削減し、現在のページのデータのみを表示できます。これは、大量のデータを処理するのに非常に役立ち、各ページの負荷の負担を効果的に軽減できます。
さらに、ページング機能をさらに最適化できます。たとえば、データは、毎回ページを更新する代わりに、Ajaxを介して動的にロードできます。このようにして、ユーザーエクスペリエンスはよりスムーズになります。
ページネーションでは、ページパラメーターは通常、URLに渡され、現在のページ番号を示します。ページングリンクが次のようにURL構造を使用する場合:
http://example.com/users?page=2
URLのドメイン部分をM66.netに置き換えて、必要な形式が次のことを確認できます。