Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> czemu optymalizator nie używa indeksu
tmk
post
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:
  1. SELECT*
  2. FROM prac
  3. WHERE nazwisko LIKE 'kowal%'

jest wykorzystwany index(table access->by index rowid)
natomiast dla zapytań:
  1. SELECT*
  2. FROM prac
  3. WHERE nazwisko LIKE '%kowal'

oraz
  1. SELECT*
  2. FROM prac
  3. WHERE nazwisko LIKE 'kowal%' OR nazwisko LIKE 'olek%'

optymalizator nie używa indexu

z czego to wynika?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
tmk
post
Post #2





Grupa: Zarejestrowani
Postów: 135
Pomógł: 0
Dołączył: 15.04.2004
Skąd: w-wa

Ostrzeżenie: (0%)
-----


Synaps: stwierdzenie faktu że nie dziala korzystanie z indeksu nic nie wyjaśnia. Widzę, ze tak jest, bo mam przed sobą explain plan. Ja zadałem pytanie dlaczego (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)

Cytat
Dla LIKE '%kowal tego nie moze uczynic wiec przeszukuje wszyskie wartosciJak takie cos przyspieszyc - niestety nie wiem

A może spróbować wymusić odwrócony INDEX? jakoś może:
  1. SELECT/*+ INDEX (prac nazwisko_idx) REVERSE*/*
  2. FROM prac
  3. WHERE nazwisko LIKE '%kowal'

wkońcu po coś są te reverese-indexy (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)

jeszcze nie miałem chwili, żeby to sprawdzić, dam znać jaki efekt po południu

Ten post edytował tmk 4.03.2006, 10:09:42
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 15.10.2025 - 00:16