目次
概要
SQLの性能改善に関する内容をまとめる。
SQLとは
SQLは「集合志向」言語
役割分担を適切に行う
SQLアンチパターン:ぐるぐる系
ぐるぐる系=アプリ側でSQL発行ループを行うこと。
<デメリット>
以下の点で負荷が重くなる原因となり、性能悪化を引き起こす。
- SQL文の送信・パース・コンパイル回数
- DBサーバとAPサーバ間のデータ転送量
- AP側の実行命令数
手続き型言語とSQLの設計思想の違い
<手続き型言語(Java、C#など)>
- 実行順序を記述する
- どんなデータでも繰り返し処理をかけるようにシンプルなループ構文を実装
<SQL>
- 簡易指定で同じ操作を一括適用する
- ループ構文を使わなくても繰り返し処理ができるようにデータを定式化(一定のパターン:表形式等)
SQLの得意とするデータ操作はSQLにやらせる
DBMSに蓄積されたデータを操作するための言語がSQL。
データ操作が得意なのは当然。
それでもSQLの使用を最低限に留めようとする開発現場は多い。その背景は何か。
<背景など>
SQLへの無理解が基本的に背景にある?
- 手続き型言語を先に習得した技術者は、設計思想の異なるSQLを忌避する傾向にある
- ORMのようにSQLを隠ぺいするライブラリの流行:SQLを書かずにすべてを手続き型言語で閉じるようにしたがる開発者も
- 複雑なSQLを使用したプロジェクトが炎上し、問題点にSQLがやり玉に挙げられた
- SQLでは複雑なロジックを組むことはできない、アプリ側で実装すべきという思い込み