sql >> Database >  >> RDS >> Mysql

Is het correct om alle kolommen in een mysql-database te indexeren?

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.



  1. Update-instructie met behulp van met clausule

  2. Slaapstandprobleem met Oracle Trigger voor het genereren van id uit een reeks

  3. ROLLBACK-gebeurtenistriggers in postgresql

  4. een betere aanpak dan het opslaan van mysql-wachtwoord in platte tekst in het configuratiebestand?