ホームページ >バックエンド開発 >PHPチュートリアル >MySQL マニュアル バージョン 5.0.20-MySQL の最適化 (4) (1) (5)_PHP チュートリアル
一般に、冗長データはすべて保存する必要があります (データベース原則では「第 3 正規形」と呼ばれます)。ただし、効率を高めるために、一部の情報をコピーしたり、要約テーブルを作成したりした方がコスト効率がよい場合があります。
ストアド プロシージャまたは UDF (ユーザー定義関数) は、一部のタスクを実行するときにパフォーマンスが向上する場合があります。それでも、データベースがこれらの機能をサポートしていない場合は、多少速度が遅くても、目的を達成できる代替手段があります。
クエリ キャッシュまたは応答から結果を取得し、多くの挿入操作と更新操作を一緒に実行できます。データベースがテーブル ロック (MySQL や ORACLE など) をサポートしている場合、これにより、すべての更新操作後にインデックス キャッシュを 1 回だけリフレッシュするだけで済みます。
データがいつテーブルに書き込まれるかを知る必要がない場合は、INSERT DELAYED を使用できます。これにより、複数のレコードが同時にディスクに書き込まれるため、速度が向上します。
SELECT ステートメントに挿入操作よりも高い優先順位を持たせたい場合は、INSERT LOW_PRIORITY を使用します。
取得レコードキューをスキップするには、SELECT HIGH_PRIORITY を使用します。これは、他のクライアントがデータを書き込もうとしている場合でも、SELECT が最初に実行されることを意味します。
1 つの INSERT ステートメントで複数のレコード挿入形式を使用します (多くのデータベースでサポートされています)。
大量のデータをインポートするには、LOAD DATA INFILE を使用します。これは INSERT よりも高速です。
一意の値を生成するには、AUTO_INCREMENT フィールドを使用します。
OPTIMIZE TABLE を定期的に実行して、動的レコード形式を使用する MyISAM テーブルの断片化を防ぎます。詳細は「15.1.3 MyISAMテーブルの格納形式」を参照してください。
HEAPテーブルを採用すると、速度が向上する可能性があります。詳細は「15.1.3 MyISAMテーブルの格納形式」を参照してください。
通常の WEB サーバー構成では、画像ファイルはファイルとして保存するのが最適で、ファイルのインデックス情報のみがデータベースに保存されます。その理由は、通常、WEB サーバーはデータベースよりもファイルのキャッシュに優れているため、ファイル ストレージを使用するとシステムの高速化が容易になるためです。