No.2ベストアンサー
- 回答日時:
>以下の2つのSQLを比較してどちらがパフォーマンスが良いでしょうか。
>先に抽出して結合した方が良いと昔聞いた事がありましたが
ルールベースの場合の話かも知れません(9i以前なら使用可能)
コストベースオプティマイザを使用すると、内部結合のON条件とWHERE句とを同等に解析してくれるので、特に書き方来る性能差はないと考えればよいです。
(1)と(2)についてですが、「実行計画」をそれぞれ表示して比べてみてください。autotraceもよいですね。おそらく同じような結果が出ると思うのですが、基本的には(2)のような書き方はあまりすべきではありません。コストベースオプティマイザによる最適実行計画立案を妨げる恐れがある書き方だと思います。(もっと複雑なSQLだと、特に)
常に(1)のような書き方を心がけ、ベストの実行計画が出にくい場合にヒント句で調整するのが一番よい方法です。
No.1
- 回答日時:
(2)の方がパフォーマンスがよいかと思うのですが、
実際は、データの分布状況にって、オプティマイザ判定が変わります。
クエリの推定プラン等をみるのが一番てっとり早いです。
昔似たような件を調べたら、(1)と(2)は同じプランを生成してました。
その時は、EXISTSを使った構文(3?)が1番早かったですが。。。(SQLserver)
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Oracle 下記のsqlで取得されるレコード以外を取得する方法ありますでしょうか。 SELECT B.番号, B 2 2022/04/20 23:21
- PostgreSQL SQLで検索結果の記事を表示したい 1 2022/04/28 21:03
- Oracle SQL update方法 2 2022/06/22 14:07
- Oracle 質問です。 下記のテーブルとデータがあり、 取得想定結果のように出力したいです。 下記のsqlだと0 2 2023/05/23 19:10
- SQL Server [SQLServer] テーブル名からカラム名を取得する 1 2022/08/23 21:20
- MySQL PhpMyAdminで作成して実行せよ。 東京23区を、皇居を中心とした4つのエリア(南東, 南西, 1 2023/06/11 11:58
- MySQL SQLです。下記の問合せを行うクエリを、PhpMyAdminで作成して実行せよ。 「昨年の各月の総降 1 2023/07/01 00:32
- MySQL SQLです。こんな感じですか?あってますか? うまくいきません教えてくださいお願いします 1 2023/07/08 15:27
- MySQL うまくいきません教えてくださいお願いしますSQLです。クエリ構文です。 1 2023/07/07 12:39
- MySQL 複数DBテーブルからのデータ取得 3 2022/05/17 15:02
このQ&Aを見た人はこんなQ&Aも見ています
-
新NISA制度は今までと何が変わる?非課税枠の拡大や投資対象の変更などを解説!
少額から投資を行う人のための非課税制度であるNISAが、2024年に改正される。おすすめの銘柄や投資額の目安について教えてもらった。
-
GROUP BYを行った後に結合したい。
Oracle
-
MAX関数を使ってからLEFT JOINしたいのですが・・
PHP
-
group byで指定したカラム以外のカラムの値を取得したい
PostgreSQL
-
-
4
[ BETWEEN ] vs [ >= AND <= ]
MySQL
-
5
キャッシュを使わずにSELECTを投げたい
Oracle
-
6
Chr(13)とChr(10)の違いは?
PowerPoint(パワーポイント)
-
7
件数とデータを同時に取得するには?
Oracle
-
8
SQLで特定の項目の重複のみを排除した全項目を取得する方法
その他(プログラミング・Web制作)
-
9
truncate tableを使って複数のテーブルを指定する方法
Oracle
-
10
「マスタ」と「テーブル」の違いとはなんでしょうか?
Oracle
-
11
3つ以上のテーブルをUNIONするのは現時的でないでしょうか?
MySQL
-
12
MERGE文を単体テーブルに対して行いたい
Oracle
-
13
SQLで、Join句で結合したテーブルにデータが無い場合について
SQL Server
-
14
SELECTの結果で同一行を複数回出力する
Oracle
-
15
Like文の速度について教えてください
Oracle
-
16
batである文字列内に特定の文字列が含まれているか確認したい
その他(プログラミング・Web制作)
-
17
テーブルからのselectにおいてデータの有無により結果をわけたい
PostgreSQL
-
18
データベースのINT型項目にNULLはNG?
MySQL
-
19
SQL Left Join で重複を排除するには
SQL Server
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
likeとsubstrの使いわけについて
-
キャッシュを使わずにSELECTを...
-
800万件のテーブル読み込み...
-
WHERE句はJOIN結合前結合後どち...
-
set timing と autotraceの時間...
-
ヒント句が無効になります
-
前方一致で索引(インデックス...
-
Like文の速度について教えてく...
-
Access VBAで行ラベルが定義さ...
-
エクセルVBAでUserFormを起動し...
-
Accessのマクロでモジュールを...
-
callで順に実行されるプロシー...
-
PL/SQLカーソルの2重FORループ...
-
Accessの数値から時間に変換す...
-
ODBCリンクの際にACCESSでは読...
-
access adoのトランザクション
-
SQLサーバで和暦から西暦に変換...
-
特定の日付が第何週目にあるか...
-
テーブルの主キーをdate型...
-
エクセルVBA 今日の日付行...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
キャッシュを使わずにSELECTを...
-
likeとsubstrの使いわけについて
-
WHERE句の実行順序
-
Like文の速度について教えてく...
-
WHERE句はJOIN結合前結合後どち...
-
ヒント句が無効になります
-
JOINの時のONとWHEREの違いにつ...
-
あいまい検索のパフォーマンス...
-
アナライズでほとんどの処理が...
-
SQL ORDER BYにおける条件について
-
800万件のテーブル読み込み...
-
問題解決のストーリーにて PDCA...
-
実行計画HASH JOIN RIGHT OUTER
-
oracleのanalyzeと処理時間につ...
-
【チューニング】インデックス...
-
PDCAを回すって?
-
Oracleで検索すると、フリーズ...
-
Oracle 実行計画、統計情報の見方
-
OEMで負荷の少ないSQLの実行計...
-
データ抽出の速度について
おすすめ情報