SQL クエリを発行するアプリを開発する時の注意点

クライアントから DB に接続してデータを取得する際、基本的には SQL クエリを書くことになる。 クエリについてはメンテがしやすい構成になっている方がもちろん好ましいが、それ以上に重要なのは、以下の点。

  • 速度
  • メモリ使用量

基本的には、当該クエリが扱うデータ量が少なければそこまで気にする必要ないが、大量のデータを扱う可能性がある場合、上記を考慮したクエリを作成しないと、本番のデータ量で期待したパフォーマンスを発揮できない可能性が高い。

クエリ作成時に考慮が必要な要素は以下。

  • 当該クエリで操作することになるデータ量 (テーブルに格納されているレコード数。結合等も考慮)
  • DB からクライアントに送信するデータ量
  • クエリの発行頻度。例えば、1 分間に何回の発行が見込まれるクエリなのか、など。サーバー、クライアント共に、それぞれの側の観点で考慮が必要

ケースバイケースではあるが、DB からクライアントに送信するデータ量は、可能な限り最小限にした方が良い。 クライアントアプリだと、最終的には不要なデータも含めて一度取得し、クライアントアプリ側でフィルタする事も可能だが、データ量によってはまずい可能性がある。 クエリでのフィルタが難しい場合は、ストアドの使用も検討する。

何度も書くようだがケースバイケースなので、データ量が少ない場合は、そこまで気にする必要ないと思う。