-
シーケンスオブジェクトとは? SQLの中でアクセスすることで指定した増分で増えていく数列を作成することが可能です。 実装 DBMSによって異なりますが、以下のような項目を指定することが可能です。 開始値 増分 最…
-
範囲を集計する SELECT句のCASE式で範囲を指定していただき、それをGROUP BYで指定すれば範囲での集計をすることが可能です。これを「パーテーションカット」と呼びます。 書き方 ただ、この書き方はシンプルなのですが、標準違反…
-
「WHERE + OR」と「UNION」は同値になります。 であれば、どちらを使った方が良いでしょうか。 WHERE + OR ORを使ってしまうとインデックスが使われません。 ただ、テーブルへのアクセス回数を減らす…
-
集合演算とは? テーブル同士の内容を、足したり引いたりする共通部分を抽出したりすることです。 UNION(重複行を削除する和) 結合結果で重複があった場合は、重複を排除する。テーブルの内容を足し算することです。重複行は自動で削除されま…
-
アンチパターン例 以下のようにwhere句の条件だけ少し変えてUNIONでくっつけてデータを取得するSQLをやってしまいがちになります。 [crayon-6646e4af6523d765818264/] 使いたくなるケース 「条件A…
-
ほとんどのDBが以下3つを持っています。 データキャッシュ ログキャッシュ ワーキングメモリ 共通の特徴 ユーザーが用途に応じてサイズを変更することができる。 データキャッシュ SELECT系(…
-
10.30
【SQL】INとEXISTS、JOINの違い
よく、EXISTSの方が速いのでEXISTSを使うべきと言われていたりしますが、それは間違いです。用途に合わせて使っていくのが正しい使い方になります。 結論 いろいろ調査してみた結果、以下のような使い分けが良いでしょう。 [crayo…
-
10.24
【SQL】「ON句」の意外と知らない活用法
手軽に使えるのですがエンジニアの間でも意外と知られていないSQLの活用法をご紹介します。 通常のJOINのON句の使い方 JOINのON句は以下のように結合条件のために普通は使うと思います。 [crayon-6646e4af6579d…
-
10.10
【データベース】「JSON型」について
JSON型 EAVの代替手段として近年登場してきました。 MySQLであれば、5.7.8以降で使えるようになった新たなデータ型です。基本的にはカラムの汎用性を高めて変更に強くし開発効率を上げることができます。 ただ、EAVと同…
-
10.10
【プログラミング】「日時」に関する知識
ISO8601形式 日付、時間、時刻、時差などを表現するための国際標準化機構(ISO)による規格で1988年に公開されました。世界中の多くのプログラミング言語やデータベースで採用されています。 [crayon-6646e4af65a96…