Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> dodawanie indeksów
a79rtur
post 28.09.2005, 09:48:26
Post #1





Grupa: Zarejestrowani
Postów: 331
Pomógł: 1
Dołączył: 23.05.2004
Skąd: Tarnów/Londyn

Ostrzeżenie: (0%)
-----


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 ?


--------------------
php 5.1.2 & Apache 2.0.50 & MySQL 4.1.7 @ WinXP Pro
..:: GG 6449856 ::..
www.londyn.me.uk - ogłoszenia mieszkaniowe dla Londynu
Go to the top of the page
+Quote Post
mhs
post 29.09.2005, 14:14:29
Post #2





Grupa: Zarejestrowani
Postów: 764
Pomógł: 3
Dołączył: 30.04.2003

Ostrzeżenie: (0%)
-----


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
Go to the top of the page
+Quote Post
orson
post 29.09.2005, 14:22:44
Post #3





Grupa: Zarejestrowani
Postów: 548
Pomógł: 2
Dołączył: 19.07.2003

Ostrzeżenie: (0%)
-----


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


--------------------
Computer games don't affect kids; I mean if <span style="font-weight: bold;">Pac Man</span> affected us as kids,we would all be running around in darkened rooms, munching magic pills and listening to repetitive electronic music.
Go to the top of the page
+Quote Post
SongoQ
post 29.09.2005, 15:33:20
Post #4





Grupa: Przyjaciele php.pl
Postów: 2 923
Pomógł: 9
Dołączył: 25.10.2004
Skąd: Rzeszów - studia / Warszawa - praca

Ostrzeżenie: (0%)
-----


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.


--------------------
Go to the top of the page
+Quote Post
a79rtur
post 19.10.2005, 16:59:50
Post #5





Grupa: Zarejestrowani
Postów: 331
Pomógł: 1
Dołączył: 23.05.2004
Skąd: Tarnów/Londyn

Ostrzeżenie: (0%)
-----


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 ?


--------------------
php 5.1.2 & Apache 2.0.50 & MySQL 4.1.7 @ WinXP Pro
..:: GG 6449856 ::..
www.londyn.me.uk - ogłoszenia mieszkaniowe dla Londynu
Go to the top of the page
+Quote Post
SongoQ
post 19.10.2005, 18:36:29
Post #6





Grupa: Przyjaciele php.pl
Postów: 2 923
Pomógł: 9
Dołączył: 25.10.2004
Skąd: Rzeszów - studia / Warszawa - praca

Ostrzeżenie: (0%)
-----


klucz podstawowy - po tym polu identyfikujesz rekordy dodatkowo przyspiesza dzialanie, podobnie z pozostalymi, celem jest przyspieszenie lub w przypadku unique - unikalne wartosci w bazie.


--------------------
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 Wersja Lo-Fi Aktualny czas: 14.08.2025 - 12:35