Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: dodawanie indeksów
Forum PHP.pl > Forum > Bazy danych
a79rtur
mam pare pytan dotyczacych dodawania indeksow ,w celu przyspiszenia dzialania bazy:
-czy indeksy naklada sie tylko na pola dla ktorych jest wyszukiwanie ?np. nazwa miasta

-czy jest sens nakladac ja na pola liczbowe ?np jesli jedno z pol jest wykorzystywane przy pobieraniu danych z bazy (a nie jest kluczem) lub przy laczeniu tabel

-czy w phpmyadminie wystarczy dodac indeks (za pomoca tej ikonki z blyskawicą) czy trzeba cos jeszcze zrobic ? na dole pod lista indeksow jest formularz:
Utworzenie indeksu dla X kolumn , czy tam tez cos trzeba zadzialac?

-prosty select typu : SELECT cos,cos1,cos2 FROM costabela WHERE cosklucz=123
wykonuje mi sie w phpmyadminie od 5 do nawet 90 sekund, cosklucz jest kluczem a costabela ma 2500 rekordow, gosc od hostingu twierdzi ze strona wolno chodzi bo pewnie baza niezoptymalizowana, no ale czy takie proste zapytanie moze sie tyle wykonywac ?

- moze jakies inne sposoby na przyspieszenie bazy ?
mhs
Cytat
-czy indeksy naklada sie tylko na pola dla ktorych jest wyszukiwanie ?np. nazwa miasta

nie tylko, ale na tych polach przewaznie zakłada się gdyż przyspiesza to wyszukiwanie danych

Cytat
-czy jest sens nakladac ja na pola liczbowe ?np jesli jedno z pol jest wykorzystywane przy pobieraniu danych z bazy (a nie jest kluczem) lub przy laczeniu tabel

jezeli jest często wyszukiwane to tak


Cytat
-czy w phpmyadminie wystarczy dodac indeks (za pomoca tej ikonki z blyskawicą) czy trzeba cos jeszcze zrobic ? na dole pod lista indeksow jest formularz:


tak (rownież można to zrobić za pomocą ALTER TABLE ... ADD INDEX ( ...) ), chyba, że chcesz by to było pole unikalne więc musisz później jeszcze zmienić za pomocą poniższego formularza


Cytat
prosty select typu : SELECT cos,cos1,cos2 FROM costabela WHERE cosklucz=123


trudno jest powiedzieć - u mnie prosty select na kilkuset tysiącach (jak nie kilku milionach - nie pamiętam już) rekordów wykonywał się szybciej


Cytat
- moze jakies inne sposoby na przyspieszenie bazy ?

może potrzeba się pobawić EXPLAIN i zobaczyć co się dokładnie dzieje
orson
witam ...

generalnie "szersze" (zawierające więcej niż 1 kolumnę) indeksy są wydajniejsze i przyspieszają wyszukiwanie ... jeżeli jest jakiś zestaw kolumn które są intensywnie używane przy szukaniu to dobrze dodać index ale szerszy na wszystkich kolumnach ... wtedy tym formularzem na dole ... dodajesz index i na 2 stronie wybierasz których kolumn ma on dotyczyć ...

pozdrawiam
SongoQ
Indeksu sluza do wyszukiwania. Indeks powoduje ze baza danych ma posortowane wartosci z indeksu, wtedy warunek na dane pole odbywa sie przez przeszukiwanie btree co przyspiesza zwracanie rekordow. Z tego co wyczytalem to zaleca sie gdzie dane powtarzaja sie do 20%.
2 wazna rzecza jest to ze index uzywa sie przy zlaczeniu tabel i tam gdzie w zapytaniach uzywasz warunkow.
a79rtur
mam jeszcze pytania dotyczace dodawania indeksu na kilku kolumnach
o co chodzi w tym : ("PRIMARY" musi być nazwą jedynie klucza podstawowego!) (przy nazwie indeksu )
co oznaczają rodzaje indeksów: index,unique,fulltext
jaki rozmiar dawac ,od czego to zalezy? czy to ilosc wierszy ktore bedą zindeksowane ?
SongoQ
klucz podstawowy - po tym polu identyfikujesz rekordy dodatkowo przyspiesza dzialanie, podobnie z pozostalymi, celem jest przyspieszenie lub w przypadku unique - unikalne wartosci w bazie.
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.
Invision Power Board © 2001-2025 Invision Power Services, Inc.