データベースとクエリを最適化する方法はたくさんあります。私の方法は次のとおりです。 DBスキーマで
ルック、それは意味が最も多い
を作るかどうかを確認し、データベースが悪いのデザインを持っており、正規化されません。これは、データベースの速度に大きな影響を与える可能性があります。一般的なケースとして、3つの標準形を学び、それらを常に適用してください。 3番目の正規形より上の正規形は、しばしば正規化解除形式と呼ばれますが、これは実際には、データベースをより高速にするためにいくつかの規則を破るということです。
私が提案するのは、DBA(後続のフォームを知っていて、何をやっているのかを知っていることを意味する)を除いて、3番目の通常のフォームに固執することです。 3番目のNF後の正規化は、しばしば設計中ではなく、後で行われます。
あなただけが本当に可能な限り
として
フィルターを必要とするものを照会あなたの句は最適化のための最も重要な部分です。
を選択します
を必要とするだけのフィールドは「*選択」は絶対に使用しないでください - あなたが必要なフィールドのみを指定します。それはより速く、より少ない帯域幅を使用します。
は
参加するには注意してください、時間の面で高価で参加。 2つのテーブルを関連付けるすべてのキーを使用し、使用されていないテーブルには参加しないでください。常にインデックス付きフィールドに参加してください。結合タイプも重要です(INNER、OUTER、...)。
最適化クエリやストアドプロシージャ(ほとんどの最初に実行する)
クエリは非常に高速です。一般に、ジョイン、ソート、計算を行っても、1秒以内に多くのレコードを取得できます。経験則として、クエリが1秒よりも長い場合は、おそらくそれを最適化できます。
最も頻繁に使用されるクエリと、実行に最も時間がかかるクエリから始めます。
の追加、削除または変更インデックス
クエリが正常に非常に時間のかかるプロセスであるものを解決することができる全表スキャン、インデックスと適切なフィルタリングを行う場合。すべての主キーは結合を高速化するため、索引が必要です。これは、すべてのテーブルにプライマリキーが必要であることも意味します。また、Where句でフィルタリングに使用するフィールドにインデックスを追加することもできます。
特に、整数、ブール値、および数値にインデックスを使用したいとします。一方、Blob、VarChars、Long Stringsではインデックスを使用したくないかもしれません。
インデックスを追加する際には、データベースによってメンテナンスが必要なので注意してください。そのフィールドで多くの更新を行うと、索引の保守に時間がかかることがあります。
インターネットの世界では、読み取り専用テーブルが非常に一般的です。表が読取り専用の場合、索引を保守する必要がない(または保守がほとんど必要ない)ため、マイナスの影響が少ない索引を追加できます。
ストアドプロシージャ(SP)に移動クエリ
ストアドプロシージャ次のような理由から、通常のクエリよりも良いと高速です:
Stored Procedures are compiled (SQL Code is not), making them faster than SQL code.
SPs don't use as much bandwidth because you can do many queries in one SP. SPs also stay on the server until the final results are returned.
Stored Procedures are run on the server, which is typically faster.
Calculations in code (VB, Java, C++, ...) are not as fast as SP in most cases.
It keeps your DB access code separate from your presentation layer, which makes it easier to maintain (3 tiers model).
不要なビューを削除します
ビューは特別なタイプのクエリです。これらのテーブルはテーブルではありません。これらは論理的で物理的なものではないので、MyViewからselect *を実行するたびに、ビューとそのビューに対するクエリを実行するクエリを実行します。
いつも同じ情報が必要な場合は、表示がうまくいく可能性があります。
ビューをフィルタリングする必要がある場合は、クエリでクエリを実行するようなものです。クエリが遅くなります。
チューンDBは多くの点であなたが調整できる
DBを設定します。オプティマイザが使用する統計を更新し、最適化オプションを実行し、DBを読み取り専用にするなど...これは、使用するDBの幅広い知識を必要とし、主にDBAによって行われます。クエリアナライザを使用して
は****> ****多くのデータベースに
は、実行中のクエリを最適化するためのツールがあります。 SQL Serverにはクエリアナライザと呼ばれるツールがあり、これは最適化に非常に役立ちます。クエリを記述して実行し、さらに重要なことは実行計画を見ることができます。この実行を使用して、SQL Serverがクエリをどのように処理するかを理解します。
また、他の人からもわかるように、サイトのトラフィックに応じて掲載結果が異なります。オフピーク時にphpMyAdminでクエリを実行している場合は、ピーク時にクエリを実行している場合よりもパフォーマンスが向上します。 –