MySQLのクエリの最適化
顔の質問
SQL文の効率を最適化するための方法は、SQL文のパフォーマンスを分析する方法、これらの側面から、簡単にプロジェクトを説明してください?
データアクセスクエリ処理の最適化、長い困難なクエリを最適化し、クエリの最適化の特定のタイプ
SQL文の解析法
1、単一のSQLステートメントのDESCを説明したり、分析
コラム:ニュースSELECT * FROMを説明します。
2、スロークエリログレコード
スロークエリログ分析は、直接分析のためのスロークエリログを開けないでください、これはより多くの時間と労力の無駄は、あなたがPT-クエリdisgest分析ツールを使用することができます。
3、使用ショープロフィール
たとえば、次の設定プロファイリング= 1;ターン、検出された時間は、一時テーブルに格納されたサーバ上で実行されるすべての文を、消費しました
ショープロファイル、一時表示テーブル
特定の実行時間を表示するために白羽クエリID文のショープロフィール
4、ショーのステータス
ショーのステータスは、サーバーレベルですべてのカウントのグローバルステータスビューを表示し、カウンターの一部に戻ります。
時には、これらのカウントは、時間がかかるか、これらの操作のコストの高い数を推測することができます。
5、ショーPROCESSLIST
異常な状態または機能におけるスレッドの適切な数かどうかを観察
クエリ最適化プロセス
アクセスデータにあまりにも多くのクエリは、パフォーマンスの低下につながります
アプリケーションデータは、可能な場合は、あまりにも多くの行または列、検索におけるよりも多くを必要とするかどうかを決定します
MySQLサーバが不要なデータラインを大量に分析するかどうかを確認してください
次のSQL文を使用しないでください
不要なレコードを照会し、解決するために使用を制限
すべての列のリターンに関連したマルチテーブル、必要な列のリターンを指定します
必ず、すべての列を削除し、*オプティマイザしません、完全なカバレッジの最適化インデックススキャンを選択
同じデータクエリを繰り返して、クエリ結果のキャッシュは、キャッシュからデータを取得するために、次の操作を行うことができます
追加のスキャンレコードかどうか?
ディスカバリ・クエリは、大量のデータをスキャンする必要があるが、わずか数行を返す場合、次の最適化のヒントを通過することができ、分析を説明し使用します。
ストレージエンジンが結果を返すことができるバック対応するテーブルの行を取得する必要がないようにスキャンをカバーするためにインデックスを使用して、すべての列は、インデックスに配置されています
そして、データベーステーブルの構造を変更し、データベースの変更のパラダイム
SQL文を書き直して、オプティマイザは、より最適な方法でクエリを実行することができます
長いハードのクエリの最適化
より複雑なクエリまたは単純なクエリ、
MySQLの内部メモリが数百万行のデータで毎秒スキャンすることができ、これとは対照的に、クライアントへの応答データは、より遅くなります
できるだけクエリを使用して、良いですが、複数の小さなクエリに時々大きなクエリが必要です
セグメンテーションクエリ
同じクエリへの小さなクエリの数が多いです
データ消去万の一回千万削除よりも、損失プログラムより多くのサーバーのオーバーヘッドのために中断
分解に関するお問合せ
関連のステートメントが実行するために、複数のSQLに分けることができます
より効率的なキャッシュを作成します
ロックの競合を減らすことができ、単一のクエリを実行します
相関アプリケーション層は、より簡単にデータベースを分割することができます
特定の種類の問合せ
最適化・カウント()クエリ
(*)*列、すべての直接統計シリーズのすべてを無視しますので、カウントを使用していない(列名)カウント
MyISAMテーブルには、何の数がない場合の条件(*)非常に速く、統計のMyISAMの数が他のテーブルエンジンよりも必ずしも速くないが、条件が存在する場合に
最適化
あなたは近似代替COUNT(*)との近似を説明するクエリを使用することができます
サマリー表は、キャッシュを使用して、クエリのクエリサマリー表ごとに集計表を増やします
最適化された協会の声明
ONまたはUSING句を決定するために、インデックスの列
唯一のテーブルの列BY GROUP BYおよびORDERを確認し、インデックスMYSQLを使用することが可能になります
最適化のサブクエリ
リレーショナルクエリの代替を使用します
最適化により、グループと明確な
両方のクエリは、インデックスを最適化するために使用することができ、最も効果的な最適化方法、関連するクエリー、ID列を効率的に使用することがグループ化されて高くなります
順序がnullでで、行っグループによる使用順序を必要としない場合、MySQLは、ファイルをソートすることはありません
ロールアップスーパー重合して、アプリケーションの処理をに移動することができます
ページの最適化の制限
時間オフセットの大きい低クエリ効率を制限します
IDは、IDクエリからクエリを直接、次の時間が最後のクエリの最大値を記録することができます
クエリの最適化組合
労働組合のすべての労働組合の効率よりも高いです