[+/-]
EXPLAIN
を使用して、クエリーを最適化するSELECT
クエリーの速度WHERE
節最適化IS NULL
最適化LEFT JOIN
と
RIGHT JOIN
最適化ORDER BY
最適化GROUP BY
最適化DISTINCT
最適化IN
/=ANY
サブクエリーの最適化LIMIT
の最適化optimizer_switch
を使用したオプティマイザの制御INFORMATION_SCHEMA
最適化INSERT
ステートメントの速度UPDATE
ステートメントの速度DELETE
ステートメントの速度
第 1
にすべてのステートメントに影響を及ぼすことが
1
つあります。アクセス権システムの設定の複雑性が増すほど、オーバヘッドも増加します。GRANT
ステートメントを発行する際に単純なアクセス権を使用することで、クライアントがステートメントを実行する際の
MySQL
にアクセス権確認オーバーヘッドを減らすことができます。たとえば、テーブルレベルやカラムレベルの権限を許可したくない場合、サーバーは
tables_priv
と
columns_priv
テーブルの内容を確認する必要はまったくありません。同じように、どのアカウントにもリソース制限を設けない場合、サーバーは性能リソースカカウンティングを行う必要がありません。大量の処理が必要なときは、GRANT
を使用しないことで時間を節約できる場合もあります。
明示的な MySQL
関数に関わる問題がある場合は、常に
mysql クライアントで
BENCHMARK()
関数の計時を行うことができます。その構文は
BENCHMARK(
。返される値は常に
0 ですが、mysql
はステートメントの実行にどの程度の時間を要したかを表示するラインをプリントします。例
:
loop_count
,表現
)
mysql> SELECT BENCHMARK(1000000,1+1);
+------------------------+
| BENCHMARK(1000000,1+1) |
+------------------------+
| 0 |
+------------------------+
1 row in set (0.32 sec)
これは Pentium II 400MHz システムで得られた結果です。この結果は、MySQL がそのシステムで 1,000,000 件の単純な加算式を 0.32 秒間で実行できることを示しています。
MySQL
関数はすべて最適化されていますが、例外も若干あります。BENCHMARK()
はクエリーに関数上の問題があるかどうかを調べる際に最適のツールです。