- - PR -
FULLスキャンしたい
1
| 投稿者 | 投稿内容 | ||||
|---|---|---|---|---|---|
|
投稿日時: 2005-08-09 18:39
以下のようなセレクト文で、AAAAのフルスキャンをしたいと思っています。
select /*+ FULL(AAAA) */ S.a, S.b, Z.c, Z.d, Z.e, from AAAA Z, BBBB S where Z.c = '0' and S.a = '0' and (S.a = 0 or S.a >= Z.d) and (S.b = 0 or S.b >= Z.d) order by S.a, S.b, Z.c, Z.d, Z.e これを実行すると、 実行計画ではZはフルスキャンになっているのですが、 Sがプライマリーキー検索になってしまっています。 フルスキャンにしたいのですが、どうしたらよいでしょうか。 | ||||
|
投稿日時: 2005-08-09 19:00
Z=AAAAで/*+ FULL(AAAA) */と書いたからFULL SCANになったんですよね。 だからS=BBBBについても同様のことをしたらいいんじゃないですか? #書き方はOracleのSQLリファレンスを参照してくださいませ。 #ってかDBMSかいていませんが、ヒント句の書き方からOracleだと判断させていただきました。 | ||||
|
投稿日時: 2005-08-10 09:44
うろ覚えで申し訳ありませんが、以下でできませんか?
select /*+ FULL(Z, S) */ S.a, S.b, Z.c, Z.d, Z.e, from AAAA Z, BBBB S where Z.c = '0' and S.a = '0' and (S.a = 0 or S.a >= Z.d) and (S.b = 0 or S.b >= Z.d) order by S.a, S.b, Z.c, Z.d, Z.e | ||||
|
投稿日時: 2005-08-10 10:33
これではダメです。 Oracle9iR2で実行計画をとったところ 不正なヒントとしてはずされてしまいます。 # fullヒントの書式は FULL(tablename)なので括弧内にtablenameを複数かけないそうです。 FULLヒント自体は複数回かけるので、そちらですね。 #日本語少々修正(滝汗) [ メッセージ編集済み 編集者: 夏椰(かや) 編集日時 2005-08-10 11:22 ] | ||||
|
投稿日時: 2005-08-10 11:19
テーブルBBBBに対してFULLスキャンのヒント句を
与えたらいかがでしょう。 select /*+ FULL(AAAA) */ S.a, S.b, Z.c, Z.d, Z.e, from AAAA Z, (SELECT * FROM BBBB) S where Z.c = '0' and S.a = '0' and (S.a = 0 or S.a >= Z.d) and (S.b = 0 or S.b >= Z.d) order by S.a, S.b, Z.c, Z.d, Z.e | ||||
|
投稿日時: 2005-08-15 16:23
ありがとうございます。
かやさんの方法で無事に解決しました。 ありがとうございます。 ちなみにお察しのとおりORACLEでした。 今後はきちんと記載します!! ありがとうございました!!! | ||||
1
