Oracle
我的查詢中使用的這個視圖是什麼?
我正在執行
EXPLAIN PLAN
這個查詢:SELECT DISTINCT l.item_num, l.repl_code FROM item_w l JOIN item i ON l.item_num = i.item_num LEFT JOIN item_w r ON l.item_num = r.item_num AND l.repl_code = r.whse_code WHERE r.whse_code IS NULL AND l.repl_code IN (SELECT DISTINCT whse_code FROM item_w) AND i.sa_item NOT LIKE 'Z%' ORDER BY l.item_num, l.repl_code
查詢按預期工作,但計劃告訴我它正在使用名為 的對象
VW_DTP_F6D0ECAD
,VW_DTP_53909802
而VW_DTP_69531A7E
我無法在我的數據庫中找到這些對象。這些對像是什麼以及它們是如何創建的?
執行計劃中顯示的以 VW_DTP 開頭的視圖是自 11.2 以來可用的基於成本的查詢轉換之一的結果,稱為
distinct placement
.它發生在使用該
DISTINCT
子句的語句中,就像你的一樣。加入表並過濾行,然後找到不同的行,這是一個絕對可以接受的非常明顯的執行計劃。但是,在訪問表時找到不同的行,然後再加入它們可能更有效,並且數據庫可能會根據估計的成本選擇轉換查詢。