MySql indeksy tworzenie i wykorzystanie


Wykorzystanie indeksów w większości baz danych to absolutnie podstawa. Ułatwiają one skutecznie znaleźć wiersze pasujące do kolumny w zapytaniu. Poniżej postaram się wyjaśnić podstawowe zastosowanie indeksów oraz jak prosto można z nich skorzystać.


Załóżmy że w bazie danych mamy tabelę o nazwie "products_in_orders" w której trzymamy informację o produktach w zamówieniu której wycinek wygląda następująco:

order_idproduct_idquantityprice
11243123210.89
1126310215.50
1124310225.50
1125017018.43

Następnie chcemy wyszukać wszystkie produkty z zamówienia numer 11243 używamy więc zapytania

SELECT * FROM products_in_orders WHERE order_id = 11243

Takie zapytanie zwróci wszystkie wiersze w których znajdzie numer zamówienia 11243 jednak jeżeli w tej tabeli będzie załóżmy 500 000 wierszy potrwa to stosunkowo długo. Przyspieszyć wyszukiwanie można stosując indeks na kolumnie order_id

CREATE INDEX nazwa_indeksu ON products_in_orders (order_id)

Po utworzeniu indeksu natychmiast zaobserwujemy szybsze pobieranie danych, im baza jest większa tym więcej zyskamy.

Na jednej tabeli możemy tworzyć wiele indeksów na każdą kolumnę osobno lub możemy utworzyć jedne indeks na wiele kolumn.

Utwórzmy teraz inne zapytanie (pobierające tylko produkty o określonym id z danego zamówienia):

SELECT * FROM products_in_orders WHERE order_id = 11243 AND product_id = 102

Jeżeli często używamy tego typu zapytań możemy utworzyć indeks na dwóch kolumnach

CREATE INDEX nazwa_indeksu ON products_in_orders (order_id, product_id)

nazwa.pl