![]() ![]() |
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:
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 |
|
|
|
Post
#2
|
|
|
Grupa: Zarejestrowani Postów: 744 Pomógł: 118 Dołączył: 14.02.2009 Skąd: poziome Ostrzeżenie: (0%)
|
najprosciej dodaj indexu unikalne na te wartosci ktore sa unikalne:) czyli ID.. drugie zobacz co mowi magiczne EXPLAIN.
A co do obietosci bazy.. to ona sie nie zwieksza... baza to baza, a indexy to indexy.. wiec pliki z indexem beda wiecej zajmowaly:) |
|
|
|
Post
#3
|
|
|
Grupa: Zarejestrowani Postów: 61 Pomógł: 1 Dołączył: 21.05.2009 Ostrzeżenie: (0%)
|
Ok, utworzę index unikatowy kompozytowy na (tab1_id, tab2_id), ale czy opłaca się wtedy stworzyć drugi indeks na wagę, jeśli będę sortował wg niej? Jeśli rekordów przybędzie powiedzmy n, to te dwa pliki indeksów zwiększą się 2*n-krotnie, zgadza się?
|
|
|
|
![]() ![]() |
|
Aktualny czas: 21.12.2025 - 18:58 |