Waldemar Jonik

Waldemar Jonik właściciel,
webmaster,
programista, JW Web
Development

Temat: [mysql indeksy - kiedy, ile ... ?

Kuba Świegot:
wszystko zalezy od potrzeb aplikacji i potrzeb kierowanych do bazy.

jeśli masz 1000000 rekordów i wyszukujesz jedynie 4-5 pozycji po numerze ID, czy wieku osoby - indeks spowolni tylko odczyt z bazy.

tu wlasnie indeks przyspiszy zapytanie, po to sie robi indeks glowy na kolumnie ID zeby przyspieszyc wyszukanie pojedynczego rekordu :)
Jeżeli natomiast z 1000000 rekordów potrzebujesz wybrać wszystkich Januszów z Krakowa, to 2 indeksy na imię i miasto będą dobre.
Ale jeśli założysz indeks na imię, miasto, województwo i wiek, to możesz być pewien, że stracisz kolosalnie na wydajności ;-)

to zalezy , czy indeks nakldadasz na pojedyncza kolumne czy na kilka razem bo wymieniles jakby 2 rozne przypadki raz mowiac o indeksie a raz o indeksach. nakladajac indeks na 3 kolumny a korzystajac w zapytaniu z 2 kolumn nie w tej kolejnosci nic nie zyskuje sie bo taki indeks dla tego zapytania bedzie zignorowany przez mysqlWaldemar Jonik edytował(a) ten post dnia 19.07.08 o godzinie 22:38
Waldemar Jonik

Waldemar Jonik właściciel,
webmaster,
programista, JW Web
Development

Temat: [mysql indeksy - kiedy, ile ... ?

Czy na kolumnę z województwami warto zakładać indeks? Czy jeśli wartości będzie mniej np 7 to też warto czy nie? Proszę o jakieś wskazówki.

jesli kolumna wojewodztwo bedzie bardzo czesto uzywana jako warunek to warto dac indeks, podobnie jesli ta kolumna ma zlaczac tabele - przy zlaczeniu tabel, jesli dobrze pamietam mysql korzysta tylko z jednego indeksu dla jednej tabeli (dobierajac je dynamicznie z dostepnych indeksow)
Krzysztof P.

Krzysztof P. Programista, Team
Leader

Temat: [mysql indeksy - kiedy, ile ... ?

Alan B.:
Mógłbyś wyjaśnić dokładniej? Zazwyczaj wiem, czego potrzebuję w danym widoku i wiem jakie musi być zapytanie.
Mógłbyś jakiś przykład podać?

Chodzi o głupotę, ale czasem bardzo ważną, mi się zdarzało że musiałem z tabeli która ma trochę krotek, wyciągałem tylko nieliczne (jak zwykle) ale zapytanie było z JOIN'ami, no i cała sprawa w tym, że wychodziło najszybciej, kiedy z tej tabeli pobierałem tylko wyselekcjonowane id, potem dołączałem kolejne które je dalej filtrowały, a dopiero jak już miałem id, tych co chciałem, dołączałem ich dane, czyli dwa razy w jednym zapytanie pobierałem informację z jednej tabeli.
Po prostu mniejszy zbiór łatwiej jest zbuforować, co wpłynęło znacząco na szybkość, bo kilkadziesiąt tysięcy intrger'ów i tak zajmowało mniej niż jedna krotka.

Pomijam fakt, że jak są częste wyszukiwania po złączonych tabelach, to przydało by się stworzyć tabelę do wyszukiwań, taka co zawiera dane potrzebne do wyszukania i index'y, a do niej dołącza się prawdziwe dane. Tylko że to najfajniej działa jak są trigger'y...
Ale jak było mówione paru krotnie, to co powinno się zrobić, zależy od tego co ma to robić. Bo czasem nie opłaca się kombinować, bo i tak tego nikt nie wykorzysta. (No chyba że dla satysfakcji, ale czas to pieniądz)

Następna dyskusja:

Problem z kodowaniem MySQL




Wyślij zaproszenie do