TABLE_A = 7022536行計數()查詢到20秒以上
表-B(GTT)= 5601行
查詢:
SELECT COUNT (a.ssn_head)
FROM table_a a, table_b b
WHERE b.hoh = a.head AND a.flag = 'Y';
花費20多秒,使17214條記錄。
解釋計劃是:
Plan hash value: 1901401324
--------------------------------------------------------------------------------
| Id | Operation | Name | Rows | Bytes | C
--------------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | 1 | 25 | 1
| 1 | SORT AGGREGATE | | 1 | 25 |
|* 2 | HASH JOIN | | 114K| 2801K| 1
| 3 | TABLE ACCESS FULL| table_b | 49188 | 528K|
| 4 | REMOTE | table_a | 7022K| 93M| 1
--------------------------------------------------------------------------------
table_b
(GTT)上有沒有索引...我想既然查詢正在經歷的所有表-B的,它會永遠做一個全表scan..right?
table_a
對head
什麼其他辦法還有什麼能讓這個查詢運行得更快指數?
將table_a移動到與table_b相同的服務器? – 2010-07-14 23:04:34
希望這是一個選項> _ < – 2010-07-14 23:08:46
考慮b.hoh上的索引和NOT NULL約束。 請參閱http://stackoverflow.com/questions/721556/oracle-10g-optimize-where-is-not-null – PenFold 2010-07-15 10:41:24