かなめのロジック

フリーSEの雑記ブログ。ORACLEやPostgreSQL、情報セキュリティ、金融について主に書いています。

等価結合と非等価結合

time 2016/08/01

等価結合と非等価結合

ORACLEを始めとしたリレーショナルデータベースにおいて、テーブル同士を結合してデータを出力する機会は非常に多いです。

本記事では、結合における分類である等価結合と非等価結合について解説します。

sponsored link

等価結合

等価結合とは

等価結合とは、指定した列について同じデータを持つレコード同士を紐付ける結合です。

結合といえば、この等価結合がほとんどです。

基本的な使い方は以下になります。

最近のORACLEであれば、ORACLE仕様でも標準SQL規格でもどちらでも問題なく使用できます。

パフォーマンス

等価結合では、ORACLEの内部的な結合処理で、インデックスを利用したネステッドループ結合の選択や、また、大規模テーブルの結合で有効なハッシュ結合が選択可能なため、パフォーマンスが問題となることが、非等価結合と比較して少ないです。

非等価結合

非等価結合とは

非等価結合とは、等価結合以外の結合を指します。つまり、「<>」や「>」等、「=」以外を使用した結合です。

基本的な使い方は以下になります。

こちらも、最近のORACLEであれば、ORACLE仕様でも標準SQL規格でもどちらでも問題なく使用できます。

パフォーマンス

非等価結合では、ORACLEの内部的な結合処理でインデックスを利用したネステッドループ結合が使えないことや、ハッシュ結合が選択不可能なため、パフォーマンスが問題となることが、等価結合と比較して多いので注意が必要です。

まとめ

テーブル同士を結合の分類である等価結合と非等価結合について見てきました。

特に非等価結合には注意が必要です。

パフォーマンスという点がひとつ、条件が複雑になりやすく想定外の結果になることがあるという点がもう一つです。

使用する際は、十分なテストを行って論理的な誤り・パフォーマンスの問題が起きないよう注意しましょう。

関連




sponsored link

管理人

かなめ

フリーの業務系システムエンジニア。情報処理安全確保支援士。 ORACLEと金融と子育ての狭間で、元気に楽しくやってます。 [詳細]

管理人twitter

ブログ村



sponsored link