MySQL 5.1 リファレンスマニュアル :: 6 最適化 :: 6.2 SELECTステートメントおよびその他のクエリの最適化
« 6.1.5 独自のベンチマークの使用

6.2.1 EXPLAINを使用して、クエリを最適化する »
Section Navigation      [Toggle]
  • 6 最適化
  • 6.1 最適化の概要
  • 6.2 SELECTステートメントおよびその他のクエリの最適化
    • 6.2.1 EXPLAINを使用して、クエリを最適化する
    • 6.2.2 クエリパフォーマンスの推定
    • 6.2.3 SELECTクエリの速度
    • 6.2.4 WHERE 節最適化
    • 6.2.5 Range 最適化
    • 6.2.6 インデックス結合最適化
    • 6.2.7 IS NULL最適化
    • 6.2.8 DISTINCT最適化
    • 6.2.9 LEFT JOINとRIGHT JOIN最適化
    • 6.2.10 入れ子結合最適化
    • 6.2.11 外側Join 単純化
    • 6.2.12 ORDER BY最適化
    • 6.2.13 GROUP BY最適化
    • 6.2.14 LIMITの最適化
    • 6.2.15 テーブルスキャンを避ける方法
    • 6.2.16 INSERTステートメントの速度
    • 6.2.17 UPDATEステートメントの速度
    • 6.2.18 DELETEステートメントの速度
    • 6.2.19 その他の最適化のヒント
  • 6.3 ロック関連の問題
  • 6.4 データベース構造の最適化
  • 6.5 MySQL サーバの最適化
  • 6.6 ディスク関連の問題

6.2. SELECTステートメントおよびその他のクエリの最適化

[+/-]

6.2.1. EXPLAINを使用して、クエリを最適化する
6.2.2. クエリパフォーマンスの推定
6.2.3. SELECTクエリの速度
6.2.4. WHERE 節最適化
6.2.5. Range 最適化
6.2.6. インデックス結合最適化
6.2.7. IS NULL最適化
6.2.8. DISTINCT最適化
6.2.9. LEFT JOINとRIGHT JOIN最適化
6.2.10. 入れ子結合最適化
6.2.11. 外側Join 単純化
6.2.12. ORDER BY最適化
6.2.13. GROUP BY最適化
6.2.14. LIMITの最適化
6.2.15. テーブルスキャンを避ける方法
6.2.16. INSERTステートメントの速度
6.2.17. UPDATEステートメントの速度
6.2.18. DELETEステートメントの速度
6.2.19. その他の最適化のヒント

第 1 にすべてのクエリに影響を及ぼすことが 1 つあります。アクセス権システムのセットアップの複雑性が増すほど、オーバヘッドも増加します。 GRANTステートメントを発行する際に単純なアクセス権を使用することで、クライアントがステートメントを事項する際のMySQLにアクセス権確認オーバーヘッドを減らすことができます。例えば、テーブルレベルやカラムレベルの特権を許可したくない場合、サーバはtables_privとcolumns_privテーブルの内容を確認する必要はまったくありません。同じように、どのアカウントにもリソース制限を設けない場合、サーバは性能リソースカカウンティングを行う必要がありません。大量の処理が必要なときは、GRANT を使用しないことで時間を節約できる場合もあります。

明示的な MySQL 関数に関わる問題がある場合は、常に mysqlクライアントでBENCHMARK()関数の計時を行うことができます。 その構文はBENCHMARK(loop_count,表現)。返される値は常に0ですが、mysqlはステートメントの実行にどの程度の時間を要したかを表示するラインをプリントします。例 :

mysql> SELECT BENCHMARK(1000000,1+1);
+------------------------+
| BENCHMARK(1000000,1+1) |
+------------------------+
|                      0 |
+------------------------+
1 row in set (0.32 sec)

これは、PentiumII 400MHz 上で MySQL によって 1,000,000 の + 式を 0.32 秒間に実行できることを示しています。

MySQL 関数はすべて最適化されていますが、例外も若干あります。BENCHMARK()はクエリに関数上の問題があるかどうかを調べる際に最適のツールです。

Copyright © 1997, 2010, Oracle and/or its affiliates. All rights reserved. Legal Notices
Top / Previous / Next / Up / Table of Contents
© 2010, Oracle Corporation and/or its affiliates