多表聯合查詢是如何使用索引的?
民工1024 發表于 職場2021-11-30
臨時表沒有索引,只是存放資料,所以原表的索引,約束等都是不起作用的…
表結構如下:
t_goods_decl(decl_no,orgcode,valid, 。。。。)
t_goods_decl_msg(decl_no,status,valid, 。。。。)
列出了主要欄位,其他的暫時省去。兩張表的關係是1對1,msg表存的是decl表的狀態及附加資訊。
查詢語句:
SELECT COUNT(decl。decl_no)
FROM T_GOODS_DECL decl,
T_GOODS_DECL_MSG msg
WHERE (decl。VALID=‘1’ )
AND(((msg。STATUS=‘1’ OR msg。STATUS=‘2’ )
AND decl。DECL_NO=msg。DECL_NO))
索引情況:
1。 兩張表的decl_no欄位建立唯一索引
2。 msg表的status欄位,及decl表的valid欄位分建立點陣圖索引
資料庫情況:
oracle 9i
執行計劃:
SELECT STATEMENT Optimizer Mode=CHOOSE
1 3550
SORT AGGREGATE 1 20
HASH JOIN 47 K 926 K 3550
TABLE ACCESS FULL CSUSR。T_GOODS_DECL 129 K 1 M 2661 TABLE ACCESS FULL CSUSR。T_GOODS_DECL_MSG 200 K 1 M 595