by shigemk2

当面は技術的なことしか書かない

SQL文の発行回数について

3個のSQL文と1個のSQL文とで比較すると多くの場合後者のほうが高速になる。

SQLを発行するのはアプリケーションだが、そのアプリケーションはwebサーバなど
データベースサーバとは別のマシン上で動作している。そのため、データベースサーバ
へのアクセスはリモートアクセスになる。

リモートアクセスはけっこう重い処理なので、回数を減らせるのであれば
それに越したことはない。

なお、Mobageなどでは、特定のテーブルへのトラフィックが尋常じゃないので、
テーブル単位で処理を複数のサーバに分散するケースがある(Sharding)

ただし、このシャーディングを使うと、ジョインが難しい。
テーブルごとに別々のサーバが動いているから。(このため、対策として巨大なテーブル同士でジョインしないように
アプリケーションを書くなどしている)


また、ストアドプロージャを使えば、何十回も実行する必要のあるSQL文の代わりに、
それらをまとめたストアドプロージャを使うことで、ネットワークアクセスの頻度を
大幅に減らすこともできる。

つまり、トラフィックの極めて高い環境では、「SQL文を実行する」というプロセスそのものが
大きな処理コストになるのだ。