![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 135 Pomógł: 0 Dołączył: 15.04.2004 Skąd: w-wa Ostrzeżenie: (0%) ![]() ![]() |
w tabeli prac mam: id_prac, nazwisko, id_zesp. Założyłem index na nazwisko(zwykły index ).
proszę o pomoc , ponieważ: dla zapytania:
jest wykorzystwany index(table access->by index rowid) natomiast dla zapytań:
oraz
optymalizator nie używa indexu z czego to wynika? |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 103 Pomógł: 0 Dołączył: 1.12.2003 Skąd: Gdynia Ostrzeżenie: (0%) ![]() ![]() |
W przypadku zapytania z OR podejzewam ze indeks nie jest wykorzystany dlatego iz koszt full scana tabeli jest mniejszy niz dwa skany indeksu nawet po rowid. Zapewne też działa tutaj RBO a nie CBO, jak dodasz wskazówke /*+FIRST_ROWS*/ prawdopodobnie opt skorzysta z indeksu, ale kosz wykonania będzie wiekszy niż bez niego.( zakładam też że masz wygenerowane statystki dla tabeli oraz indeksu) Oczywiście to tylko przypuszczenia bo nie wkleiłeś żadnego explain planu.
btw: co do mojego stwierdzenia dot. OR w poscie powyżej to moja pomyłka, wydawało mi się że jako drugi warunek daleś '%wartosc' co nie pozwala korzystac z indeksu ze wzgledu na niemozliwosc okreslenia przedzialu poszukiwania ( dokladnie poczatku ). Ten post edytował Synaps 6.03.2006, 15:16:31 |
|
|
![]() ![]() |
![]() |
Aktualny czas: 8.10.2025 - 20:44 |