- PR -

FULLスキャンしたい

1
投稿者投稿内容
みゅーたん
常連さん
会議室デビュー日: 2005/04/28
投稿数: 31
投稿日時: 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がプライマリーキー検索になってしまっています。
フルスキャンにしたいのですが、どうしたらよいでしょうか。
今川 美保(夏椰)
ぬし
会議室デビュー日: 2004/06/10
投稿数: 363
お住まい・勤務地: 神奈川県茅ヶ崎市
投稿日時: 2005-08-09 19:00
引用:

みゅーたんさんの書き込み (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がプライマリーキー検索になってしまっています。
フルスキャンにしたいのですが、どうしたらよいでしょうか。



Z=AAAAで/*+ FULL(AAAA) */と書いたからFULL SCANになったんですよね。
だからS=BBBBについても同様のことをしたらいいんじゃないですか?


#書き方はOracleのSQLリファレンスを参照してくださいませ。
#ってかDBMSかいていませんが、ヒント句の書き方からOracleだと判断させていただきました。
あんとれ
ぬし
会議室デビュー日: 2004/01/14
投稿数: 556
投稿日時: 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
今川 美保(夏椰)
ぬし
会議室デビュー日: 2004/06/10
投稿数: 363
お住まい・勤務地: 神奈川県茅ヶ崎市
投稿日時: 2005-08-10 10:33
引用:

select /*+ FULL(Z, S) */



これではダメです。
Oracle9iR2で実行計画をとったところ
不正なヒントとしてはずされてしまいます。
# fullヒントの書式は FULL(tablename)なので括弧内にtablenameを複数かけないそうです。

FULLヒント自体は複数回かけるので、そちらですね。


#日本語少々修正(滝汗)

[ メッセージ編集済み 編集者: 夏椰(かや) 編集日時 2005-08-10 11:22 ]
まっく
会議室デビュー日: 2002/08/30
投稿数: 18
投稿日時: 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/04/28
投稿数: 31
投稿日時: 2005-08-15 16:23
ありがとうございます。
かやさんの方法で無事に解決しました。
ありがとうございます。

ちなみにお察しのとおりORACLEでした。
今後はきちんと記載します!!
ありがとうございました!!!
1

スキルアップ/キャリアアップ(JOB@IT)