Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> index - male pytanie
adamx
post
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" ?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 4)
Zbłąkany
post
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ż smile.gif , ale oczywiście wszystko zależy od struktury tabel smile.gif .


--------------------
Ś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"
Go to the top of the page
+Quote Post
TomASS
post
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)


--------------------
Go to the top of the page
+Quote Post
adamx
post
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 ?
Go to the top of the page
+Quote Post
TomASS
post
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


--------------------
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 21.08.2025 - 12:21