Jestem bardzo nowy, aby indeksować i wyjaśniać plany, więc proszę o zachowanie mnie! Próbuję dostroić zapytanie, ale mam problemy.Oracle nie używa indeksu przy dołączaniu
Mam dwie tabele:
SKU
------
SKUIDX (Unique index)
CLRIDX (Index)
..
..
IMPCOST_CLR
-----------
ICCIDX (Unique index)
CLRIDX (Index)
...
..
Kiedy robię select * from SKU where clridx = 122
, widzę, że jest to za pomocą indeksu w planie wyjaśnienia (mówi TABELA DOSTĘP .. INDEX, mówi nazwa indeksu pod OBJECT_NAME i opcje to RANGE SCAN).
Teraz, gdy próbuję dołączyć do tego samego pola, wydaje się, że nie korzysta z indeksu (mówi TABLE ACCESS .. HASH JOIN i pod opcjami, mówi FULL).
Czego powinienem szukać, aby sprawdzić, dlaczego nie korzysta z indeksu? Niestety, nie jestem pewien, jakie polecenia wpisać, więc proszę dać mi znać, jeśli potrzebujesz więcej informacji.
Przykłady:
1-ty zapytania:
SELECT
*
FROM
AP21.SKU
WHERE
CLRIDX = 100
2-ty zapytania:
SELECT
*
FROM
AP21.IMPCOST_CLR
WHERE
CLRIDX = 100
3-ty zapytania:
SELECT
*
FROM
AP21.SKU
INNER JOIN
AP21.IMPCOST_CLR ON
IMPCOST_CLR.CLRIDX = SKU.CLRIDX
Co to jest kwerenda użyć podczas łączenia? – APC
Hi- zobacz moją edycję. Zapytanie, które próbuję dostroić, jest setki o wiele dłuższe, ale rozbicie go i zrobienie tego krok po kroku! – Lock
Jak rozwiązałeś swój pełny problem ze skanowaniem? – Salman