tumeks
26.12.2006, 17:21:34
Witam! Mam pytanie odnośnie indeksów w MySQL'u posiadam grę www.knights.pl gra już troche ma i baza danych jest bardzo duża i teraz pytanie jak rozłożyć indeksy aby gra działała szybciej? Z tego co czytałem i zrozumiałem to indeksy nakłada się na te pola które umieszczam w WHERE - index do liczb, a FULLTEXT dla tekstu.
Powiedzmy że mam tabele:
Kod
id
nazwa
atak
obrona
hp
exp
exp1
zloto
zloto1
lvl
obr_min
obr_max
img
dane wyszukuje według lvla, więc index nałożyć tylko na pole "lvl" ? oczywiscie w zapytaniu pobieram wszytkie dane.
Pozdrawiam
Denver
26.12.2006, 18:16:59
Przeszukaj dokumentację MySQL'a pod kątem polecenia "EXPLAIN ...". Rezultat tego polecenia w znacznej mierze pomoże Ci we właściwym doborze indeksów.
Indeo
26.12.2006, 19:09:35
Po pierwsze indeksy nakłada sie na pola, będące węzłami relacji pomiędzy tabelami na zasadzie towary.id_towaru = dostawcy.id_towaru. Po drugie tak jak napisałes - na polach po których dużo sie szuka lub sortuje. Warto tez zastanowić się czasami nad bardziej złożonymi kluczami (kombinacja pól, unikalność).
tumeks
27.12.2006, 01:51:42
No to tak posłuchałem waszych rad ale mam pewien dylemat tak jak pisza dodanie indeksu przyspisza wyszukiwanie ale zwalnia dodawanie i edytowanie skoro mam np. tabele w ktorej sa zachowane postacie i tam prawie co pochwila jest jakis update opłaca się tam rzucić indeks? Czy np. w karczmie (chat) w której bardzo dużo osob pisz rzucic na treść fulltext?
Denver
27.12.2006, 11:32:46
Nikt Ci nie poda konkretnej odpowiedzi: tak, indeks jest potrzebny, lub nie, zrezygnuj z indeksów w Twojej bazie. Musisz mocno przetestować oba rozwiązania i wybrać te, które będzie najlepsze dla użytkowników. W większości przypadków radzę jednak indeksy założyć. Nie spotkałem się jeszcze z bazą, której to jakoś wybitnie zaszkodziło, natomiast wiele razy indeksy ratowały mnie przed fatalną wydajnością zapytań.
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.