Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Indexy - jak stosować?
phpion
post
Post #1





Grupa: Moderatorzy
Postów: 6 072
Pomógł: 861
Dołączył: 10.12.2003
Skąd: Dąbrowa Górnicza




Hejka,
aż wstyd się przyznać ale do tej pory nie zaprzątałem sobie tym głowy i robiłem indexy na pojedyczne kolumny. Chciałbym się jednak dowiedzieć czy jest sens robienia czegoś takiego:
Mam tabelę, w której są pola np.
- login varchar
- haslo varchar
- aktywny enum("0", "1")
Indexy stawiałem dla każdego z pól osobno. Jednak najczęściej tworzę zapytanie, w którym nie wybieram rekordu po 1 warunku (np. WHERE login="nanana") tylko 3 na raz (WHERE login="nanana" AND haslo="ooo" AND aktywny="1"). Czy w takim przypadku nie powinienem utworzyć również indexu:
INDEX (login, haslo, aktywny)
? Jeśli tak to to by oznaczalo, że należy tworzyć indexy na wszystkie kombinacje danych?
Pozdrawiam: pion
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
DeyV
post
Post #2





Grupa: Zarząd
Postów: 2 277
Pomógł: 6
Dołączył: 27.12.2002
Skąd: Wołów/Wrocław




Cytat
porównania oczywiście muszą być w tej samej kolejności, w jakiej tworzą indeks).

Hmm - a to dlaczego?
Przecież dla optymalizatora zapytań nie ma znaczenia kolejność warunków w WHERE

Cytat
W Twoim przypadku dałbym indeks złożony na kolumny: login, haslo, aktywny.


A ja zrezygnowałbym z hasła zarówno w Index, jak i w zapytaniu.
W indexie nie jest potrzebne, bo jak sądzę, masz bazę gdzie Login jest Unique, więc i tak nie pojawi się nigdy kombinacja gdzie będzie 1 login i wiele haseł, stąd też index na haśle nigdy nie będzie wykorzystany.

A w zapytaniu unikałbym tego z względów czystego bezpieczeństwa - wiele zapytań jest logowanych, często wyświetlane są w trakcie debugowania, tak więc szkoda by było otwarcie wyświetlić tą informację.
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: 9.10.2025 - 01:03