Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Indeksy w tabeli wiele-do-wielu
rugby
post
Post #1





Grupa: Zarejestrowani
Postów: 61
Pomógł: 1
Dołączył: 21.05.2009

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


Jak najbardziej optymalnie rozwiązać taki problem:

Mam dwie table powiązane relacją wiele-do-wielu (many-to-many). Spinam je trzecią tabelą z kolumnami:
tab1_id, tab2_id, waga

Tab1_id wskazuje na id w tabeli 1, tab2_id na id w tabeli 2, waga to pewna liczba, wg której będę później sortował wyniki. Chcę, by relacje były unikatowe, czyli nie było dwóch rekordów o tych samych tab1_id i tab2_id łącznie.

Ile i jakie ustawić indeksy w tej trzeciej tabeli? Czy bardziej wydajne jest stworzenie trzech zwykłych indeksów na kolumny: tab1_id, tab2_id, waga, czy lepiej dwa indeksy (jeden unikatowy kompozytowy na kolumny: tab1_id, tab2_id i drugi zwykły na kolumnę waga), czy może lepiej cztery (trzy zwykłe na kolumny: tab1_id, tab2_id, waga i czwarty unikatowy kompozytowy na kolumny: tab1_id, tab2_id)?

Najczęstsze zapytania będą typu:
  1. SELECT tab2.* FROM tab2 INNER JOIN tab3 ON tab2.id=tab3.tab2_id WHERE tab3.tab1_id=1 ORDER BY waga


Jak ilość indeksów wpływa na wielkość bazy przy bardzo dużej liczbie rekordów?

Ten post edytował rugby 9.07.2009, 16:11:59
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 20.12.2025 - 10:58