
オラクルのあるテーブルに10万件のレコードがあります。カラム数は30です。
初歩的な話になりますが、(1)と(2)はどちらが速いでしようか。
(1)
SELECT x FROM TBL_A WHERE ...AND...AND...AND...AND...AND
という複雑なSQLを実行するとします。
これに該当するレコード数は[3千件]です。
これで、
value =RS("x")
RS.movenext
を3千回実行する。(sqlを実行するのは一回のみ)
(2)
同じく複雑なSQLを実行します。
SELECT x FROM TBL_A WHERE ...AND...AND...AND...AND...AND VAL=15
これに該当するレコード数は[1]件です。
value =RS("x")
で取得。
また同じSQLを3千回実行する。
上記について初歩的ですが、確認したいです。
sql実行の対象レコードが、数万に上っても、SQLを何回も実行したほうがやはり遅いでしょうか。
また、上記の3千が、100件程度とか少ない場合、速度差が逆転しないでしょぅか。
No.2ベストアンサー
- 回答日時:
1回でできることを複数回でやるメリットは
全くありません。先ず、結果が3000件でも
1件でも抽出にかかる時間はほぼ同じです。
つまり、後者は前者に比べ、2999回分の
余計な時間がかかるということです。
キャッシュ云々は結果論であって、クリアな
状態を前提とすべきです。
むしろ、SQLの組み方一つで実行時間に差が
でます(特にOracleは)ので、高速になる
技法を学ぶ方がずっと有益です。
例えば、以下のようなSQLがあるとします。
SELECT * FROM Z WHERE 条件1 AND 条件2
色々な条件が絡みますが、次のようにすると
速度が改善されることがあります。
SELECT * FROM (SELECT * FROM Z WHWRE 条件1) WHERE 条件2
そうなんですね。抽出にかかる時間がほぼ同じなら、
SQL一回で実行し、あとはレコードを何回も取得する方法が
対象件数にも影響されず、本来理想そうです。
SQLも上記で速度が違うのはしりませんでした。
ありがとうございました。
No.1
- 回答日時:
毎回ディスクアクセスが発生するような検索方法を採った場合では、
SQL を実行した方が遅くなると考えられます。
しかし、連続して処理が行われると仮定するならば、キャッシュに
残っているので、ヒット件数が3千件程度であるならば、ほとんど差が
表れないと考えて良いと思います。
キャッシュに残るというのは、
SELECT x FROM TBL_A WHERE ...AND...AND...AND...AND...AND VAL=15
の結果がキャッシュに残るのではなく、
SELECT x FROM TBL_A WHERE ...AND...AND...AND...AND...AND
の結果がキャッシュに残るのでしょうかね。
それだと確かに、あまりかわらないかもしれないという感じがしますが。
ありがとうございます!
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
キャッシュを使わずにSELECTを...
-
WHERE句の実行順序
-
likeとsubstrの使いわけについて
-
アナライズでほとんどの処理が...
-
PDCAを回すって?
-
あいまい検索のパフォーマンス...
-
ヒント句が無効になります
-
Accessのマクロでモジュールを...
-
SQL文のエラー
-
Access VBAで行ラベルが定義さ...
-
Statement ignored というエラー
-
ODBCリンクの際にACCESSでは読...
-
重複するIDのデータを1行にま...
-
SQLで部分的にGROUP BYしたいとき
-
エクセルVBAでUserFormを起動し...
-
sqlplusでヘッダーが付かない
-
今日の日付が入った行のデータ...
-
ストアドプロシジャからストア...
-
日付型カラムへのデータINSERT
-
callで順に実行されるプロシー...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
キャッシュを使わずにSELECTを...
-
WHERE句の実行順序
-
likeとsubstrの使いわけについて
-
ヒント句が無効になります
-
あいまい検索のパフォーマンス...
-
Like文の速度について教えてく...
-
WHERE句はJOIN結合前結合後どち...
-
いつもお世話になってます。
-
パフォーマンスについて
-
問題解決のストーリーにて PDCA...
-
SQL ORDER BYにおける条件について
-
実行計画HASH JOIN RIGHT OUTER
-
計画力をつけるにはどうすれば...
-
表の結合(性能)
-
JOINの時のONとWHEREの違いにつ...
-
アナライズでほとんどの処理が...
-
実行計画の取得方法について
-
実行計画(EXPLAIN PLAN、AUTOT...
-
外部結合と等価結合のパフォー...
-
アナライズとヒント句
おすすめ情報