2011-10-25 4 views
0

なんで何らかの理由で私のテーブルがインデックス高速フルスキャンをしています。ここインデックススキャンをしていないテーブル

は私のクエリここ

SELECT bo.bid,cu.cid 
FROM ass2master_booking bo, ass2master_customer cu 
WHERE bo.cid = cu.cid 
and rownum < 135000; 

は、トレースファイル

SELECT bo.bid,cu.cid 
FROM ass2master_booking bo, ass2master_customer cu 
WHERE bo.cid = cu.cid 
and rownum < 135000 


call  count  cpu elapsed  disk  query current  rows 
------- ------ -------- ---------- ---------- ---------- ---------- ---------- 
Parse  1  0.00  0.00   0   0   0   0 
Execute  2  0.00  0.00   0   0   0   0 
Fetch  9001  0.19  0.41  387  2131   0  134999 
------- ------ -------- ---------- ---------- ---------- ---------- ---------- 
total  9004  0.19  0.41  387  2131   0  134999 

Misses in library cache during parse: 0 
Optimizer mode: ALL_ROWS 
Parsing user id: 5594 

Rows  Row Source Operation 
------- --------------------------------------------------- 
134999 COUNT STOPKEY (cr=2131 pr=387 pw=189 time=411804 us) 
134999 HASH JOIN (cr=2131 pr=387 pw=189 time=276737 us) 
150000 INDEX FAST FULL SCAN CUSTOMER_CID_IDX (cr=320 pr=315 pw=0 time=263 us)(object id 332052) 
7412 TABLE ACCESS FULL ASS2MASTER_BOOKING (cr=1811 pr=44 pw=0 time=7566 us) 

は基本的に私は、私は15万行とdetermとの2つのテーブル与えられたunstructredデータに構造を追加するように言われたです以下の構造が最高でした。

  • 非クラスタ化インデックス
  • クラスタ化インデックス
  • ハッシュは
  • 非構造化データをクラスタ化されました。

私が上記のテストを行うことを選んだ質問です。

答えて

1

インデックスアクセスが意味を成さないように、両方のテーブルの大部分を選択しています。

索引で必要なもの(cu.cid)がすべて見つかるため、表が不要なため、表の高速フルスキャンが表アクセス・フルの代わりに使用されます。

は、私はあなたが

非クラスタ化インデックスクラスタ化インデックスのハッシュは、非構造化データをクラスタ化して何を意味するのか見当がつかない。

更新:

私が使用親指のルールを考える:

あなたがテーブルのもっとそして20%が必要な場合は、私が全表スキャンを期待しています。 テーブルの5%未満を必要とする場合は、何らかのインデックスアクセスが必要です。

SQL文をチューニングするときに最初に行うことの1つは、実行計画を調べて、オラクルが各ステップから戻ってくる行の数を確認することです。これらの数値が完全に間違っていると、実行計画はおそらくかなり悪いです。

+0

hi jens、インデックスはいつ使用する必要がありますか?あなたが特定のテーブルで特定の値を選択するとき? like customname = 'tom'のように? – paktrick

関連する問題