Skip to content

PostgreSQLユーザーがSQL Server開発で知っておきたかった実践Tips10選#1821

Merged
ma91n merged 2 commits into
mainfrom
feature
May 12, 2026
Merged

PostgreSQLユーザーがSQL Server開発で知っておきたかった実践Tips10選#1821
ma91n merged 2 commits into
mainfrom
feature

Conversation

@ma91n
Copy link
Copy Markdown
Collaborator

@ma91n ma91n commented May 12, 2026

No description provided.

@ma91n ma91n self-assigned this May 12, 2026

製造エネルギー事業部の辻です。ここ数年は PostgreSQL を中心に開発していましたが、最近 SQL Server(Azure SQL Database)を利用する機会がありました。

細かいところで、いくつか PostgreSQL と SQL Server で挙動が異なる点がありました。本記事では実運用を見据えた開発で役に立ちそうな少しディープなTipsをまとめました。
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🚫 [textlint] <eslint.rules.ja-technical-writing/no-doubled-joshi> reported by reviewdog 🐶
一文に二回以上利用されている助詞 "が" がみつかりました。

次の助詞が連続しているため、文を読みにくくしています。

  • "が"
  • "が"

同じ助詞を連続して利用しない、文の中で順番を入れ替える、文を分割するなどを検討してください。
(ja-technical-writing/no-doubled-joshi)


# 7. ロック挙動が PostgreSQL と異なる

SQL Server の悲観ロックは PostgreSQL よりもロックされる範囲が広くなりやすいため注意が必要です。
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🚫 [textlint] <eslint.rules.ja-technical-writing/no-doubled-joshi> reported by reviewdog 🐶
一文に二回以上利用されている助詞 "が" がみつかりました。

次の助詞が連続しているため、文を読みにくくしています。

  • "が"
  • "が"

同じ助詞を連続して利用しない、文の中で順番を入れ替える、文を分割するなどを検討してください。
(ja-technical-writing/no-doubled-joshi)


SQL Server の悲観ロックは PostgreSQL よりもロックされる範囲が広くなりやすいため注意が必要です。

PostgreSQL の `SELECT ... FOR UPDATE` は、最終的に条件に一致した行だけをロックします。対して SQL Server で `WITH (UPDLOCK)` を用いた場合、条件に合う行をスキャンする途中で読み込んだ行にもロックが及ぶことがあります[^5]。そのため、PostgreSQL と同じ感覚で使うと、更新対象ではない行までブロックしてしまい、システム全体の並行性を下げるリスクがあります。
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🚫 [textlint] <eslint.rules.ja-technical-writing/no-doubled-joshi> reported by reviewdog 🐶
一文に二回以上利用されている助詞 "が" がみつかりました。

次の助詞が連続しているため、文を読みにくくしています。

  • "が"
  • "が"

同じ助詞を連続して利用しない、文の中で順番を入れ替える、文を分割するなどを検討してください。
(ja-technical-writing/no-doubled-joshi)

Azure SQL Database のデフォルト分離レベル (RCSI)

Azure SQL Database では、デフォルトで READ_COMMITTED_SNAPSHOT (RCSI) が有効になっています[^6]。これは PostgreSQL の MVCC と同様に読込が書込をブロックしない挙動です。Azure SQL Database ではこの設定により並行性が確保されています。ただし、明示的に `WITH (UPDLOCK)` を使用して悲観的ロックを行う場合は、上述のスキャン範囲によるロックの特性に留意する必要があります。
:::
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🚫 [textlint] <eslint.rules.ja-technical-writing/ja-no-mixed-period> reported by reviewdog 🐶
文末が"。"で終わっていません。
理由: 句点は文の境界を明確にし、読み手の理解を助けます
修正: 適切な文末表現で文を完結させ、句点を追加してください
例: 「〜です。」「〜ます。」「〜でした。」など (ja-technical-writing/ja-no-mixed-period)


# 9. `WITH` 句はマテリアライズされず、複数回参照すると都度計算される

PostgreSQL では、`WITH` 句を定義してメインクエリ内で同じ CTE を複数回参照した場合、既定ではマテリアライズされるため 1 回しか計算されません[^11]。そのため、重い処理を `WITH` 句に切り出して再利用するテクニックが有効な場面があります。
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🚫 [textlint] <eslint.rules.ja-technical-writing/no-doubled-joshi> reported by reviewdog 🐶
一文に二回以上利用されている助詞 "が" がみつかりました。

次の助詞が連続しているため、文を読みにくくしています。

  • "が"
  • "が"

同じ助詞を連続して利用しない、文の中で順番を入れ替える、文を分割するなどを検討してください。
(ja-technical-writing/no-doubled-joshi)


一方 SQL Server における `WITH` 句はインラインビューとして扱われます。結果セットは物理的に保持されないため、メインクエリ内で複数回参照すると、その回数分だけ元テーブルへのスキャンや再計算が行われます[^12]。

PostgreSQL の感覚で重い処理を 1 回で済ませる目的で `WITH` 句を多用すると、SQL Server ではかえって遅くなることがあります。複数回参照する重い処理がある場合は、`WITH` 句ではなく一時テーブル(`#temp` テーブル)に結果を格納するなどの代替アプローチを検討するのが安全です。
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🚫 [textlint] <eslint.rules.ja-technical-writing/no-doubled-joshi> reported by reviewdog 🐶
一文に二回以上利用されている助詞 "で" がみつかりました。

次の助詞が連続しているため、文を読みにくくしています。

  • "で"
  • "で"

同じ助詞を連続して利用しない、文の中で順番を入れ替える、文を分割するなどを検討してください。
(ja-technical-writing/no-doubled-joshi)

…たかった実践Tips10選.md

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
@ma91n ma91n merged commit c5fef2b into main May 12, 2026
1 check failed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant