Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Index na często powtarzających się wartościach
piotrek24
post
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:

  1. mysql_query('SELECT data FROM projekty GROUP BY data');


Mam więc kolumnę z bardzo często powtarzającymi się rekordami, ale chyba powinienem nałożyć na nią index?.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
dr_bonzo
post
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.
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: 4.10.2025 - 23:15