PHP および MySQL でページング クエリを実行する場合、データベースのインデックスによりクエリ効率が大幅に向上します。この記事では、インデックスを使用してページング クエリを最適化し、システム パフォーマンスを向上させる方法を説明します。
インデックスは、データのクエリ プロセスを高速化するために設計されたデータベース内のデータ構造です。インデックスを作成すると、MySQL はテーブル内のデータ行をより効率的に見つけることができるため、クエリのパフォーマンスが向上します。ページング クエリはクエリの効率に影響を与えることが多く、適切なインデックスはこのプロセスで重要な役割を果たします。
MySQL では、インデックスはテーブルの作成時に指定することも、テーブルの作成後に ALTER TABLE ステートメントを介して追加することもできます。一般的なインデックスの種類には、通常のインデックス、一意のインデックス、主キー インデックス、およびフルテキスト インデックスが含まれます。ページング クエリのシナリオでは、通常、通常のインデックスが使用されます。
以下はテーブルとインデックスを作成するサンプルコードです。
 CREATE TABLE `user` (  
  `id` int(11) NOT NULL AUTO_INCREMENT,  
  `name` varchar(255) NOT NULL,  
  `age` int(11) NOT NULL,  
  PRIMARY KEY (`id`),  
  INDEX `idx_name` (`name`)  
) ENGINE=InnoDB;このコードは、`user` という名前のテーブルと、`name` 列に `idx_name` という名前の通常のインデックスを作成します。
PHP コードでは、「LIMIT」キーワードを「ORDER BY」句と組み合わせて使用して、クエリ結果の数を制限し、それらを並べ替えることができます。インデックスと組み合わせて使用すると、ページ分割されたクエリのパフォーマンスが大幅に向上します。
以下は、PHP を使用したページング クエリのサンプル コードです。
 <?php  
$servername = "localhost";  
$username = "your_username";  
$password = "your_password";  
$dbname = "your_database";  
// データベース接続の作成  
$conn = new mysqli($servername, $username, $password, $dbname);  
// 接続が成功したかどうかを確認する  
if ($conn->connect_error) {  
    die("接続に失敗しました: " . $conn->connect_error);  
}  
// ページングパラメータ  
$pageSize = 10; // ページごとに表示されるレコードの数  
$page = isset($_GET['page']) ? intval($_GET['page']) : 1; // 現在のページ番号  
// レコードの総数を問い合わせる  
$sql = "SELECT COUNT(*) AS total FROM user";  
$res = $conn->query($sql);  
$row = $res->fetch_assoc();  
$total = $row['total'];  
// ページングデータのクエリ  
$offset = ($page - 1) * $pageSize; // オフセット  
$sql = "SELECT * FROM user ORDER BY name LIMIT $offset, $pageSize";  
$res = $conn->query($sql);  
// ページ分割されたデータを出力する  
if ($res->num_rows > 0) {  
    while ($row = $res->fetch_assoc()) {  
        echo "ID: " . $row['id'] . " - Name: " . $row['name'] . " - Age: " . $row['age'] . "<br>";  
    }  
} else {  
    echo "0 結果";  
}  
// ページ分割されたナビゲーションを出力する  
$totalPages = ceil($total / $pageSize); // 総ページ数  
$prevPage = $page - 1; // 前のページのページ番号  
$nextPage = $page + 1; // 次のページ番号  
echo "<br>";  
echo "<a href='?page=$prevPage'>前のページへ</a> ";  
for ($i = 1; $i <= $totalPages; $i++) {  
    echo "<a href='?page=$i'>$i</a> ";  
}  
echo "<a href='?page=$nextPage'>次のページ</a>";  
// データベース接続を閉じる  
$conn->close();  
?>  
このコードは、まずデータベース接続を作成し、ページング パラメーターを設定します。次に、「LIMIT」キーワードと計算されたオフセットを使用してページング データをクエリし、最後にページング結果とナビゲーションを出力します。
インデックスを正しく作成して使用すると、PHP および MySQL でのページング クエリの効率が大幅に向上します。実際の開発では、特定のビジネス ニーズとデータ規模に基づいてページング クエリをさらに最適化することで、ユーザー エクスペリエンスとシステム パフォーマンスを大幅に向上させることができます。
 
								
								
							 
								
								
							 
								
								
							 
								
								
							 
								
								
							 
								
								
							 
								
								
							 
								
								
							 
								
								
							