這是來自uni測試的挑戰。
需求是使用提示來解決它。Oracle SQL - 無法通過提示刪除索引使用情況?
我想完成一個查詢,我希望它使用嵌套循環和NO指數。對於這一點,我寫的查詢:
select /*+ USE_NL(fulltable) NO_INDEX(fulltable) */ sum(QUANTITY) summarized from
(select /*+ USE_NL(sz1, sz2, c1) NO_INDEX(sz1, sz2, c1) */ distinct *
from SZTABLE sz1
natural join SZTABLE2 sz2
natural join CTABLE c1
where city= 'Newark' and COLOR= 'red') fulltable;
然而,在解釋查詢和寫出來,我得到:
SELECT STATEMENT + +
SORT + AGGREGATE +
VIEW + +
HASH + UNIQUE +
NESTED LOOPS + +
NESTED LOOPS + +
HASH JOIN + +
JOIN FILTER + CREATE + :BF0000
TABLE ACCESS + FULL + CTABLE
VIEW + + VW_DTP_5C333E12
HASH + UNIQUE +
JOIN FILTER + USE + :BF0000
TABLE ACCESS + FULL + SZTABLE
INDEX + UNIQUE SCAN + SZO_SZKOD
TABLE ACCESS + BY INDEX ROWID + SZTABLE2
顯然,查詢仍然使用索引,即使我明確要求它不要。我怎樣才能解決這個問題?爲什麼還有和索引用於ROWID?
(該計劃是由下面的代碼片段寫出來。)
SELECT LPAD(' ', 2*(level-1))||operation||' + '||options||' + '||object_name terv
FROM plan_table
START WITH id = 0 AND statement_id = 'plan1'
CONNECT BY PRIOR id = parent_id AND statement_id = 'plan1'
ORDER SIBLINGS BY position;
我會強烈建議您不要使用'自然join'無法找到它。它使得查詢非常難以理解,因爲連接鍵不清晰。 –
我明白,但這不是問題的關鍵。我想知道爲什麼我不能使索引使用消失。 –
請發表您的表格結構 – Aleksej