はじめに: 現在、データベース操作がアプリケーション全体、特に Web アプリケーションのパフォーマンスのボトルネックになっています。データベースのパフォーマンスに関しては、DBA だけが心配する必要があるのではなく、私たちプログラマも注意を払う必要があります。データベースのテーブル構造を設計し、データベースを操作するとき (特にテーブルを検索するときの SQL ステートメント)、データ操作のパフォーマンスに注意を払う必要があります。
1. スロークエリを有効にする
1> 查看慢查询是否开启 show variables like "%quer%"; slow_query_log = ON #已开启
2> 有効にする方法: my.cnf ディレクトリの設定
slow_query_log=on #是否开启 slow_query_log_file=/opt/MySQL_Data/TEST1-slow.log #慢查询文件位置 long_query_time=2 #查询超过多少秒才记录
2. スロークエリログに表示される EXPLAIN SELECT クエリ
テーブルの説明: データを表示しますこの行のどのテーブルに関するものですか
type: これは、接続に使用されるタイプを示す重要な列です。最適な結合タイプから最悪の結合タイプまでは、const、eq_reg、ref、range、index、all です
possible_keys: このテーブルに適用される可能性のあるインデックスを表示します。空の場合、インデックスは作成できません。関連するドメインの where ステートメントから適切なステートメントを選択できます
key: 実際に使用されるインデックス。 null の場合、インデックスは使用されません。まれに、MySQL は最適化が不十分なインデックスを選択します。この場合、select ステートメントで use Index (indexname) を使用してインデックスの使用を強制するか、ignore Index (indexname) を使用して MySQL にインデックスを無視させることができます
key_len: 使用されるインデックスの長さ。精度を損なうことなく、短いほど良い
ref: インデックスのどの列が使用されているかを示します (可能であれば定数)
rows: 要求されたデータを返すために mysql がチェックする必要があると考える行 数値
extra: 追加情報MySQL がクエリを解析する方法について。例: 一時的なものを使用し、ファイルソートを使用すると、mysql はインデックスをまったく使用できなくなり、その結果、取得が非常に遅くなります
【関連する推奨事項】
1.
無料の mysql オンラインビデオチュートリアルMySQL 最新マニュアルチュートリアルデータベース設計に関するあれこれ以上がmysql の遅いクエリと EXPLAIN の概要の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。