0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

MySQLのSQLチューニングの覚書

Posted at

こんにちは。齋藤です。
今回はデータベースのパフォーマンスを向上させるためのSQLのチューニングについてMySQLを題材に書いていこうと思います。

目次

  1. インデックスを活用する
  2. クエリの分析
  3. スロークエリログの活用
  4. クエリの最適化
  5. まとめ

1. インデックスを活用する

インデックスは検索速度を大幅に向上させるための重要な手段です。

インデックスの確認

SHOW INDEX FROM テーブル名;

インデックスの追加

CREATE INDEX インデックス名 ON テーブル名 (カラム名);

インデックスの削除

DROP INDEX インデックス名 ON テーブル名;

2. クエリの分析

EXPLAINを使用して、クエリの実行計画を確認

EXPLAINの使い方

EXPLAIN SELECT カラム名 FROM テーブル名 WHERE 条件;
  • type: ALL(フルテーブルスキャン)は避ける
  • key: 使用されているインデックス
  • rows: 予想される読み込み行数

3. スロークエリログの活用

スロークエリログを有効にして、時間のかかるクエリを特定します。

スロークエリログの設定

my.cnfに以下を追加

slow_query_log = 1
slow_query_log_file = /var/log/mysql/slow-query.log
long_query_time = 2

4. クエリの最適化

不要なカラムの選択を避ける

SELECT 必要なカラム FROM テーブル名 WHERE 条件;

JOIN句の最適化

結合条件にインデックスを使用

SELECT A.カラム名, B.カラム名
FROM テーブルA AS A
JOIN テーブルB AS B ON A.カラム名 = B.カラム名
WHERE 条件;

まとめ

SQLチューニングは、データベースのパフォーマンスを向上させるための重要な手段です。インデックスの活用、クエリの分析、スロークエリログの活用などを通じて、効率的なクエリを書きましょう。

以上、齋藤でした。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?