カテゴリー:SQL
-
範囲を集計する SELECT句のCASE式で範囲を指定していただき、それをGROUP BYで指定すれば範囲での集計をすることが可能です。これを「パーテーションカット」と呼びます。 書き方 ただ、この書き方はシンプルなのですが、標準違反…
-
「WHERE + OR」と「UNION」は同値になります。 であれば、どちらを使った方が良いでしょうか。 WHERE + OR ORを使ってしまうとインデックスが使われません。 ただ、テーブルへのアクセス回数を減らす…
-
集合演算とは? テーブル同士の内容を、足したり引いたりする共通部分を抽出したりすることです。 UNION(重複行を削除する和) 結合結果で重複があった場合は、重複を排除する。テーブルの内容を足し算することです。重複行は自動で削除されま…
-
アンチパターン例 以下のようにwhere句の条件だけ少し変えてUNIONでくっつけてデータを取得するSQLをやってしまいがちになります。 [crayon-67874897c6995862655982/] 使いたくなるケース 「条件A…
-
10.30
【SQL】INとEXISTS、JOINの違い
よく、EXISTSの方が速いのでEXISTSを使うべきと言われていたりしますが、それは間違いです。用途に合わせて使っていくのが正しい使い方になります。 結論 いろいろ調査してみた結果、以下のような使い分けが良いでしょう。 [crayo…
-
10.24
【SQL】「ON句」の意外と知らない活用法
手軽に使えるのですがエンジニアの間でも意外と知られていないSQLの活用法をご紹介します。 通常のJOINのON句の使い方 JOINのON句は以下のように結合条件のために普通は使うと思います。 [crayon-67874897c7179…
-
JOINが増えるとパフォーマンスが低下します。 INNER JOINの場合は論理和になるので、A、B、C、Dと4つのテーブルがあった場合は、AとB、AとC、AとD、BとC、BとD、CとDというように重なりを調べていくので指数関数的に増…
-
基本指針 「複雑なSQL」から逃げないこと 複雑なSQLは避けたがる現場もあるかもしれません。しかし、複雑なSQLを使わないとループからのDB呼び出しの多重ループが発生するため、アプリの性能が遅くなってしまいます。複雑なSQLから逃げな…
-
06.22
【SQL】「制約」の種類と使い方
制約の種類 制約名 説明 NOT NULL制約 NULLを許容しない。 UNIQUE制約 重複値を許可しないです。(ただし、NULLの重複は許可します。) PRIMARY KEY制約(主キー…
-
ウィンドウ関数(OLAP関数)とは? データベースを使って、リアルタイム(オンラインで)にデータ分析を行うための処理のことで、2000年代中盤くらいからトレンドになっている古くからあるデータベース技術の中でも、比較的新しい技術です。 …