「駑馬十駕」を信念に IT系情報を中心に調べた事をコツコツ綴っています。

インデックスの仕組みを理解してSQLを劇的に高速化する方法

インデックスの仕組みを理解してSQLを劇的に高速化する方法

SQLの処理が遅いと感じたとき、多くの人が「サーバが遅いのでは?」と思いがちです。しかし、実際の原因の多くは「インデックス(索引)」の使い方にあります。この記事では、インデックスの基本構造から、実際のチューニング手法までを体系的に解説します …

SQL:MERGE文でINSERTとUPDATEを一度に行う効率的な方法

SQL:MERGE文でINSERTとUPDATEを一度に行う効率的な方法

MERGE文とは? SQLのMERGE文は、対象テーブルにデータが存在する場合はUPDATE、存在しない場合はINSERTを1回の処理でまとめて行える便利な構文です。従来は「UPDATE → 該当しなければINSERT」といった2回の処理が …

SQL:ウィンドウ関数(OVER句)でランキング・累計を計算する

SQL:ウィンドウ関数(OVER句)でランキング・累計を計算する

データ分析やレポート作成では、「順位付け」 や 「累計」 のような集計処理がよく登場します。従来はサブクエリや自己結合を使う必要がありましたが、SQLの ウィンドウ関数(OVER句) を使えば簡潔に記述できます。この記事では、代表的な使い方 …

SQL:NOT IN と NOT EXISTS の違いとパフォーマンス比較

SQL:NOT IN と NOT EXISTS の違いとパフォーマンス比較

SQLでサブクエリを使って除外条件を指定する際に利用される「NOT IN」と「NOT EXISTS」。両者の動作の違いやNULLの扱い、パフォーマンス差を実例付きで徹底解説します。 EXISTS は ANSI SQL(国際標準SQL)に含ま …

SQL便利技:PIVOTとUNPIVOTで自由自在に表を変換する方法

SQL便利技:PIVOTとUNPIVOTで自由自在に表を変換する方法

SQLを使ってデータを扱うとき、表の形を「横持ち」や「縦持ち」に変換したい場面は多々あります。例えば、月ごとの売上を列ごとに並べたい、あるいはアンケート結果を1列にまとめたいなど。 こうした「表の回転」に便利なのが PIVOT と UNPI …

DENSE_RANKとRANKの違いを使い分けるランキング便利技

DENSE_RANKとRANKの違いを使い分けるランキング便利技

SQLでデータに順位を付けたいとき、よく使われるのが RANK と DENSE_RANK です。どちらもウィンドウ関数として利用でき、同点がある場合にどう順位を振るかが異なります。 「売上ランキングを作りたい」「部門ごとのTOP3を出したい …

正規表現(REGEXP)でSQLがもっと楽になる!実践パターン集

正規表現(REGEXP)でSQLがもっと楽になる!実践パターン集

SQLの検索でよく使われる LIKE 句は便利ですが、複雑な条件指定には限界があります。そこで強力な武器となるのが 正規表現(REGEXP)。この記事では、基本的な使い方からよく使うパターン、さらに「SQLで利用できる正規表現の一覧」をまと …