SQLパフォーマンス改善のポイント

この記事を書いたチーム:frontier

はじめに

【エンジニア募集中】フルリモート可◎、売上/従業員数9年連続UP、平均残業8時間、有給取得率90%、年休124日以上 etc.  詳細はこちらから>

SQL文を書いていく中で、パフォーマンスの違いに気づくことがありました。この記事では、自分なりに調べたり試したりして「これは使えそう」と思ったSQL最適化のヒントを共有いたします。今後のSQLチューニングや開発時の参考になれば幸いです。

 

1. 必要なカラムだけを指定する

SELECT * は避け、必要なカラムのみを指定しましょう。

悪い例:

良い例:

無駄なデータ転送を減らし、パフォーマンス向上につながります。

 

2. インデックス(索引)を適切に利用する

WHERE JOINORDER BY に使うカラムにはインデックスを設定すると、検索速度が大幅に向上します。

例:

※注意:インデックスが多すぎると、INSERTUPDATEDELETE の処理が遅くなる可能性があります。

 

3. WHERE句内でカラムに関数を使わない

関数を使うとインデックスが無効になることがあります。

非効率な例:

効率的な例:

 

4. 不要な複雑なJOINを避ける

必要なテーブルだけをJOINし、エイリアス(別名)を使って読みやすくしましょう。

例:

 

5. 大量のデータにはINよりEXISTSを使う

INはサブクエリの結果が多い場合にパフォーマンスが低下しがちです。

より高速な例:

 

6. LIMITやページネーションでデータ量を制限する

大量データを扱う際は、ページングで処理を分割しましょう。

例:

 

7. EXPLAINでクエリの実行計画を確認する

MySQLPostgreSQLでは、EXPLAINでクエリがどのように実行されるかを確認できます。

例:

これにより、インデックスが使用されているか、どこがボトルネックかを把握できます。

 

8. サブクエリの使いすぎに注意する

サブクエリを多用すると、パフォーマンスが低下する可能性があります。

遅い例:

より効率的な例:

 

結論

SQLを最適化することで、アプリケーションのパフォーマンスが大きく改善され、データベースの負荷も軽減されます。定期的にクエリを見直して改善していきましょう!

【エンジニア募集中】フルリモートも◎(リモート率85.7%)、平均残業8時間、年休124日以上、有給取得率90% etc. 詳細はこちらから>

Smallitのサービス