PHP Webアプリケーションの一般的な機能は、PHP Webアプリケーションで一般的な機能ですが、正しく最適化されていない場合、パフォーマンスに影響を与える可能性があります。この記事では、ページネーションとソート効率を改善するための最適化のヒントをいくつか共有します。
制限とオフセットを使用します
制限およびオフセットキーワードは、クエリによって返される結果の数を制限し、指定されたレコードの数をスキップできます。例えば:
$sql
=
"SELECT * FROM `table` LIMIT 10 OFFSET 20"
;
上記のクエリは、20番目のレコードから始まり、10のデータを返します。
クエリキャッシュを使用します
クエリキャッシュは、重複したクエリ結果を保存することができ、それによりデータベースへのリクエストの数が減少します。 PHPのPDO拡張機能を使用したクエリキャッシュの例を次に示します。
$stmt
=
$conn
->prepare(
"SELECT * FROM `table` LIMIT 10 OFFSET 20"
);
$stmt
->execute();
$stmt
->setFetchMode(PDO::FETCH_ASSOC);
$cache
=
array
();
while
(
$result
=
$stmt
->fetch()) {
$cache
[] =
$result
;
}
インデックスを使用します
インデックス作成は、データベースのクエリデータ、特に並べ替え条件としてよく使用される列のインデックス作成をスピードアップできます。
クエリでのソートを避けてください
可能であれば、ソートロジックをデータベースクエリからPHPコードに移動します。これにより、データベースの負担が軽減されます。例えば:
$results
=
$conn
->query(
"SELECT * FROM `table`"
);
usort(
$results
,
function
(
$a
,
$b
) {
return
strcmp
(
$a
[
'name'
],
$b
[
'name'
});
ページネーションを使用して、完全なテーブルスキャンを避けます
大規模なデータセットの場合、すべてのレコードのクエリを一度に照会しないでください。ただし、パフォーマンスを大幅に向上させることができます。
100万のレコードがあるテーブルがあるとします。すべてのデータを一度に取得して並べ替えようとすると、時間がかかる場合があります。次の最適化戦略を適用することにより、
これらの最適化方法を使用すると、ページングおよびソート操作の実行効率を大幅に改善できます。