ホームページ  >  記事  >  データベース  >  mysql の遅いクエリと EXPLAIN の概要

mysql の遅いクエリと EXPLAIN の概要

零下一度
零下一度オリジナル
2017-05-12 11:04:031747ブラウズ

はじめに: 現在、データベース操作がアプリケーション全体、特に 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 オンラインビデオチュートリアル

2.

MySQL 最新マニュアルチュートリアル

3.

データベース設計に関するあれこれ

以上がmysql の遅いクエリと EXPLAIN の概要の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。