![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 11 Pomógł: 0 Dołączył: 24.07.2007 Ostrzeżenie: (0%) ![]() ![]() |
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" ? |
|
|
![]() |
![]() ![]()
Post
#2
|
|
![]() Administrator serwera Grupa: Developerzy Postów: 521 Pomógł: 13 Dołączył: 2.04.2004 Skąd: 52°24' N 16°56' E Ostrzeżenie: (0%) ![]() ![]() |
Przy "ORDER BY" i "GROUP BY" generalnie też
![]() ![]() -------------------- Środowisko: Gentoo 2008.0 | Apache | PHP5 | PostgreSQL | MySQL | Postfix
Workstation: Gentoo 2008.0 | Firefox Thomas Alva Edison: "Aby coś wynaleźć wystarczy odrobina wyobraźni i sterta złomu ..." Odpowiedź na każde pytanie typu "Jak ...": "Nie da się, to nie PostgreSQL" |
|
|
![]()
Post
#3
|
|
![]() Grupa: Zarejestrowani Postów: 1 660 Pomógł: 13 Dołączył: 9.06.2004 Skąd: Wrocław i okolice Ostrzeżenie: (0%) ![]() ![]() |
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)
-------------------- |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 11 Pomógł: 0 Dołączył: 24.07.2007 Ostrzeżenie: (0%) ![]() ![]() |
TomASS, duzy w sensie zwracanych rekordow, czy rekordow, ktore trzeba przerobic ?
|
|
|
![]()
Post
#5
|
|
![]() Grupa: Zarejestrowani Postów: 1 660 Pomógł: 13 Dołączył: 9.06.2004 Skąd: Wrocław i okolice Ostrzeżenie: (0%) ![]() ![]() |
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 -------------------- |
|
|
![]() ![]() |
![]() |
Aktualny czas: 21.08.2025 - 12:21 |