graph (6) : 再帰クエリ

データを全部 VRAM に押しやった結果 Shader Language でアルゴリズムを書かざるを得なくなったリアルタイム 3D プログラミングのように,総合的なパフォーマンスを考えてデータを RDB に追いやるなら,再帰も SQL の流儀で書く必要が出てきます.

―― そのほか「これは速い」と体感された機能はありますか。

小川 Transact-SQL拡張機能の「共通テーブル式」ですね。共通テーブル式 (CTE : Common Table Expressions) は、再帰クエリを実現でき、階層構造を持ったデータを簡単に取り出せるようになります。今までは、階層構造を取り出すのに tempdb データベース内に一時テーブルを作ったり、自己結合をしたりしなければならなかったのが、共通テーブル式であれば非常にシンプルな SQL 文で書けます。かつ、パフォーマンスも良いのです。これは、掲示板でよく利用されるスレッド表示機能など、再帰的にループで回すような処理に本当に便利です。

Common Table Expressions についてのメモ.

WITH common_table_expression (Transact-SQL)
http://msdn2.microsoft.com/en-us/library/ms175972.aspx
Common Table Expressions (CTE) on SQL 2005
http://www.databasejournal.com/features/mssql/article.php/3502676

河端さんのところにクイズ発見.

金額に収まるレコードの組み合わせを調べる
http://blogs.sqlpassj.org/yoshihirokawabata/archive/2004/11/11/5739.aspx