SQLのWITH句で再帰問合せを試してみる
2014 年 12 月 15 日 月曜日 by O谷WITH句自体はoracle9iからサポートされているので10年以上前のものですが、
WITH句自体はoracle9iからサポートされているので10年以上前のものですが、
今回はSQLのWITH句をご紹介させて頂きます。
WITH句ではSQL文中で利用できる一時表を定義でき、そのSQL文中であれば繰り返し利用できます。
(SQLの実行環境とデータについては、以前にご紹介させて頂きましたクラウド上でSQLが実行できる APECとそのサンプルデータを利用しています。 )
まずWITH句を利用しない場合のSQLがこちらです。
これをWITH句で書き換えるとこうなります。
インラインビューやサブクエリーに記述した内容をWITH句に定義することで可読性も上がりますし、 同じサブクエリーを複数回利用したい場合などにも有効です。
今回、ご紹介したSQLだと効果が分かりづらいかもしれませんが、複雑なSQLを記述する際などは大変便利なので使ってみてください。
なお、WITH句では他にも再帰SQLとして実装する事も可能ですが、また別の機会にご紹介させて頂きます。
データベースのインデックスを張る際によく「性別」に付けても意味が無いと言われたりしますが、実際の所どうなのでしょうか?(SQL Serverで)試してみました。
で。結論から言うと遅くなります。(というか使用されません) ただし…
NoSQLという言葉をあちこちでよく聞くようになってずいぶん経ちますが
今ひとつイメージが沸かないといった人も多いようですし、私もそうです。
が、そうも言っておられません。
使い慣れたリレーショナルデータベースとどう違うか、
今回はNoSQLのうちKey Value Store(KVS)と呼ばれるモデルの簡単な説明を試みます。
(さらに…)
以前に紹介したMySQL Workbenchがバージョンアップしているようです。
開発が進んで実用レベルになってきたことを期待して再度レビューしてみましょう。
前々回(DBを使ったIPアドレス管理~任意のレンジで抽出する~)、前回(DBを使ったIPアドレス管理~積集合でレンジを表現する~)と2回にわたってIPアドレスをDBで管理する方法を検討しました。
改めて読み返してみると、2回目の説明が少なすぎるように思いましたので、少し解説したいと思います。
1回目の内容についてはそれなりに解説できていること、2回目の内容のほとんどの考え方は1回目の解説で理解できることから、2回目の「利用可能なレンジの一覧」を取得するSQLについて解説します。
前回(DBを使ったIPアドレス管理~任意のレンジで抽出する~)、煩わしいIPアドレスの管理をDBを利用してもっとスマートに行なえないかを考えてみましたが、実装上の弱点が残ってしまいました。
今回はその弱点を解決すべく検討した結果です。
IPアドレスを管理する場合、大抵Excelを使って一覧を作っていると思いますが、もっと効率よくIPアドレスを管理する方法はないものかと前々から思い悩んでいました。
今回はデータベースでIPアドレスを管理し、使用中または未使用のアドレスを任意のレンジで抽出できるように試行錯誤した結果の記録です。
SQLiteを使ってみるにあたって、管理ツールはないものかと探してみた記録です。
wikipediaのSQLiteの項によると、日本語表示可能な管理ツール「SQLiteManager」があるとのことですが、本家サイトの情報もまだまとまりきっていないようなので、ubuntu公式パッケージになっている「SQLite browser」を試してみます。(注:Ubuntuパッケージ名は「SQLite browser」ですが、公式名称は「SQLite Database Browser」のようです。 )
環境はUbuntu8.04です。