adamx
3.09.2007, 14:20:16
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
3.09.2007, 14:39:57
Przy "ORDER BY" i "GROUP BY" generalnie też

, ale oczywiście wszystko zależy od struktury tabel

.
TomASS
5.09.2007, 08:40:17
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
6.09.2007, 09:34:20
TomASS, duzy w sensie zwracanych rekordow, czy rekordow, ktore trzeba przerobic ?
TomASS
10.09.2007, 12:38:36
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.