SQLを書くコツ|集合は一斉に変化することを理解する
作成日:2025-05-09
更新日:2025-05-09

Everything meaningful
comes in sets.
comes in sets.

意味あるものは
セットでやってくる?

一斉に変化する
ってことよ
Sets change all at once|集合は一斉に変化する
SQL for Smarties: Advanced SQL Programming
all the rows of the result set are created at the same time.
すべての行の結果は、同時に発生する

同時?

一括操作ってことなの
SQLは「一括操作」|all at once
- Sets of data are manipulated as complete units of work
- 作業単位で処理をする
- not row-by-row processing.
- 一行一行ではない

なぜ一括で操作できるの?

実は、本当の意味での
一括操作は無理なのよ
順次実行の果てに、結果を一括で出す

エンジンはひとつひとつ
操作してる
終了のホイッスルで一斉変化
- エンジンは、ひとつひとつ処理をする
- 結果が出たら
- 一斉に変化させる

人間の視点からは
一括に見えてる

だから、考え方を変えないと
SQLが書けないの
SQLを書くコツ|The key to make SQL databases perform well
Rethink|そもそもから考え直す
SQL文を書くには
- to take a break from the keyboard
- まず、キーボードから離れること
- rethink the way of approaching the problem
- そもそもの考えを見直す必要がある
- rethink in terms of a set-based declarative approach
- 集合ベースの宣言型アプローチで考え直す必要がある

キーボードから離れるの?

いきなりパソコン画面に向かうと
ひとつひとつ書きがちだから
パソコンを離れ、全体をイメージする
紙で書いたほうがいい場合も
- 複雑なSQLをコーディングする前に
- 全体像を紙に書いてみる

全体像?

「どうやろう?」を捨てるの
実装を急ぐな、設計を見直せ
- まず自分の考えを捨てる
- あれやって、これやって…は手続き →NG!
- ループやifのチカラ技を捨てる
- ひとつずつの処理を考えない
- 新しい考えを取り入れる
- 「何をしたいか」に切り替える
- 「全体の集合に対して何をすべきか」に変える
- 個別の行ではなく、集合全体を対象にする
補足)rethink と reconsider の違い
単語 | ニュアンス |
---|---|
rethink | ゼロベースで根本的に考え直す |
reconsider | 一度考えたことを再検討する |

「そもそも」から考え直し?

ゴールを宣言するの
ゴールの宣言から始める
Think in sets. Declare the goal.
- Don’t think row by row. Think in sets.
- 一行ずつ考えるな、集合で考えよ
- Don’t trace the flow—declare the goal.
- 過程を忘れ、ゴールを宣言せよ

どうしよう?は忘れていい
ゴールだけ宣言すればいい

SQLは
お願いする言語だから
まずはゴールを
考えよう
あとはやってくれる
考えよう
あとはやってくれる
参考文献
- Joe Celko’s SQL for Smarties: Advanced SQL Programming
- 達人に学ぶ SQL徹底指南書(ミック)
- 達人に学ぶDB設計徹底指南書(ミック)

To be continued…
CLICK
2025-05-09
編集後記:
この記事の内容がベストではないかもしれません。