Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Pytanie o indeksację tabeli
chrupka
post
Post #1





Grupa: Zarejestrowani
Postów: 28
Pomógł: 0
Dołączył: 11.01.2007

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


Witam.

Mam pytanie odnośnie indeksacji tabel.
Mam tabelę "languages" : id (int),name (varchar) ,iso (varchar) ,sequence (int).

Przypuśćmy, że wykonuję na niej dwa zapytania:
SELECT `Language`.`id`, `Language`.`iso`, `Language`.`desc`, `Language`.`sequence` FROM `languages` AS `Language` WHERE 1 = 1 ORDER BY `sequence` asc

SELECT `Language`.`id`, `Language`.`iso`, `Language`.`desc`, `Language`.`sequence` FROM `pmw_languages` AS `Language` WHERE id = 1

Jakie powinny być indeksy dla tej tabeli? Czy indeksować pola po klauzuli WHERE, czy klauzula ORDER też ma znaczenie?
Tzn. czy wystarczy indeks PRIMARY KEY na id, aby stwierdzić, że tabela jest poprawnie zaindeksowana? Czy należy jeszcze założyć INDEX na pole 'sequence' po którym najczęściej sortuję.

To samo pytanie tyczy się pola w innej tabelce (tabela "photos") - pole `created` (datetime). Czyli data dodania rekordu. Jeśli ów tabelę sortuję najczęściej po owym "created" to czy też powinien on być uwzględniony w indeksie? Np dla najczęściej wykonywanego zapytania:
SELECT `Photo`.`id` FROM `photos` AS `Photo` WHERE category_id = 1 ORDER BY `created` desc
Czy poprawny indeks dla tej tabeli to sam INDEX category_id, czy INDEX złożony z dwóch pól, a mianowicie `category_id` i `created`?

Z góry dziękuję za pomoc:)
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
maly_swd
post
Post #2





Grupa: Zarejestrowani
Postów: 744
Pomógł: 118
Dołączył: 14.02.2009
Skąd: poziome

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


Ogolnie indexy pomagaja w wyszukiwaniu ( czyli SELECT ) ale zwalniaja przy (INSERT, UPDATE, DELETE..).
Jesli robisz duzo pobran z bazy to duzo indexow;) (ale bez przesady).

Innym sposobem na sprawdzenie, czy dobrze masz zalozone indexy jest EXPLAIN .. i tu zapytanie
Go to the top of the page
+Quote Post

Posty w temacie


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: 17.10.2025 - 22:27