Čemu onda služe indeksi u Access-u?
Konkretno, ako se uzmu dve tabele (u mom primeru 450,000 zapisa) koje su sa istovetnim podacima:
1) prva tabela
AutoID - primarni ključ, index
T1 - index
T2
2) druga tabela:
AutoID - primarni ključ, index
T1
T2
Ako se naprave dva upita SELECT * FROM ... WHERE T1=vrednost;
razlika u brzini je više nego očigledna (prvi slučaj je rezultat dao odmah, a drugi nakon 5 sekundi), a i potrošnja memorije takođe (prvi slučaj oko 2 MB, drugi oko 15 MB). Ništa se nije promenilo ni prilikom ponovnog upita na lokalnoj mašini. Ako je baza na serveru u mreži, prvi upit ponovo ide gotovo trenutno, a drugi je još sporiji (ovde jeste slučaj da je brži ponovljeni upit, ali DALEKO sporije nego kada je polje indeksirano). Sa memorijom opet isto: 2:15.
Što se samog pregleda tiče, ovde si u pravu: radi se verovatno o tome da Access učitava čitavu (ili dobar deo) tabelu ako u memoriji ima dovoljno mesta, što je ovde i bio slučaj. Bilo bi interesantno videti kako bi reagovao kada bi server imao npr. 128 MB RAMa, a baza bila recimo 500 MB. U ovom slučaju baza je oko 70 MB. Svejedno, zauzeće memorije i ovde je bilo značajno manje nego što je veličina same tabele.
Moj zaključak može samo da bude: WHERE i index.
Commercial-Free !!!