Nee, u indexeert niet alle kolommen. U indexeert kolommen die specifiek betrokken zijn bij een WHERE
clausule, en soms als ze betrokken zijn bij een ORDER BY
.
In dit geval wil je een index op type
:
SELECT name FROM users WHERE type='admin'
In dit geval wil je een index op active,type
:
SELECT name FROM users WHERE type='admin' AND active=1
In dit geval wil je misschien een index op active,type,name
:
SELECT name FROM users WHERE type-='admin' AND active=1 ORDER BY name LIMIT 10
Hoe meer indexen u toevoegt, hoe langzamer het schrijven zal zijn, maar hoe sneller het wordt gelezen. Dit is een klassieke afweging. Evalueer zorgvuldig welke indexen u nodig heeft en pas ze alleen toe als er een tastbaar voordeel is. Geef ze niet zomaar een klap omdat je vindt dat ze er zouden moeten zijn.
Op superkleine tabellen, die met <1000 rijen, zullen indexen niet zo veel helpen, omdat een tabelscan niet zo lang duurt. Over alles wat niet triviaal is, zijn ze absoluut essentieel.
Als je prestatieproblemen hebt, raad ik aan dat je schema het grootste obstakel is, niet het gebrek aan indexen.