Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: index - male pytanie
Forum PHP.pl > Forum > Bazy danych
adamx
Witam,
mam male pytanie odnosnie tworzenia indexow.. czy indexy potwinno sie tworzyc tylko dla kolumn, ktore podajemy w "where" czy takze dla tych ktore podajemy przy "order by" lub "group by" ?
Zbłąkany
Przy "ORDER BY" i "GROUP BY" generalnie też smile.gif , ale oczywiście wszystko zależy od struktury tabel smile.gif .
TomASS
Ja bym nie dawał indeksów wtedy kiedy zbiór objęty klauzulami "GROUP BY" lub "ORDER" byłby duży. Jeśli masz np. tabelę 100 000 rekordów. A GROUP BY zwróci Ci wszystkie rekordy zgrupowane w np. 4 zbiory (czyli średnio po 25000 rekordów) to bym nie dawał indeksu (z założenia powinien być jak najbardziej selektywny)
adamx
TomASS, duzy w sensie zwracanych rekordow, czy rekordow, ktore trzeba przerobic ?
TomASS
W sensie zwracanych rekordów. Kiedyś mówiło się, że indeks powinien mieć selektywność na poziomie 10% - dzisiaj jest to nie praktyczne, ponieważ kiedyś bazy danych rzędu 100 000 może były i duże (indeks zwracał np. 10 000 rekordów) - przy dzisiejszych rozmiarach baz danych, wyszukiwanie z indeksem powinno zwracać po prostu małą ilość rekordów. Masz np. tabele zamówienia - 200 000 rekordów. Masz także np. 4 sklepy, nie ma sensu zakładania indeksu na kolumnę "SKLEP" - zapytanie wykorzystujące indeks założony na tą kolumnę i tak będzie miało do przerobienia duuużo rekordów - nawet po odrzuceniu niepasujących, natomiast gdy masz indeks na kolumnę "KLIENT" i masz 400 klientów, wtedy zapytanie z indeksem na "KLIENT" zwróci stosunkowo małą liczbę rekordów (np. 500).

Mam nadzieję, że nie wytłumaczyłem tego pokrętnie.

Tomek
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.