![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 47 Pomógł: 0 Dołączył: 22.07.2006 Ostrzeżenie: (0%) ![]() ![]() |
W różnych kursach MySQL pisze że nie powinno się zakładać index-ów na kolumnach gdzie wartości często się powtarzają, ale... nie pisze dlaczego.
Przypuśćmy że mam tabelę "projekty" z takimi polami: data - YEAR projekt - VARCHAR I mam tam powiedzmy 10000 rekordów z 3 lat. Czyli w tej liczbie 10000 są tylko trzy różne daty. Wyświetlając projekty chcę najpierw wyświetlić listę lat:
Mam więc kolumnę z bardzo często powtarzającymi się rekordami, ale chyba powinienem nałożyć na nią index?. |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Przyjaciele php.pl Postów: 5 724 Pomógł: 259 Dołączył: 13.04.2004 Skąd: N/A Ostrzeżenie: (0%) ![]() ![]() |
A co ci daje indeks na tej dacie? ze baza potrafi czybko znalezc rekordy gdzie data == np. 2000.
Zaglada do poukladanego indeksu, znajduje szybko 2000, i znajduje 50000 rekordow z ta wartoscia, i teraz wszystkie wyciaga: pozycja rekordu z indeksu, pobranie rekordu, pozycja kolejnego rekordu z indeksu, pobranie rekordu itd... I wlasnie to [latanie w te i we wte] moze byc wolniejsze od Table Scan'u - przelecenia wszystkich rekordow, i dla kazdego sprawdzania czy data == 2000. Zawsze mozesz porownac czasowo oba rozwiazania - to tylko indeks, nie napsuje ci bazy przy jego dodawaniu i usuwaniu. |
|
|
![]() ![]() |
![]() |
Aktualny czas: 4.10.2025 - 23:15 |