sql >> Database >  >> RDS >> Mysql

Alle kolommen van de tabel moeten worden geïndexeerd of niet mysql-database?

Het maken van een index vereist extra schijfruimte, en dat te veel indexen problemen kunnen veroorzaken die voortvloeien uit de limieten van de bestandssystemen, moet zorgvuldig worden overwogen om de juiste velden te selecteren om te indexeren.

Aangezien indexen alleen worden gebruikt om het zoeken naar een overeenkomend veld binnen de records te versnellen, ligt het voor de hand dat het indexeren van velden die alleen voor uitvoer worden gebruikt, gewoon een verspilling van schijfruimte en verwerkingstijd zou zijn bij het uitvoeren van een invoeg- of verwijderbewerking, en dus moet worden vermeden. Ook gezien de aard van een binaire zoekopdracht is de kardinaliteit of uniciteit van de gegevens belangrijk. Indexeren op een veld met een kardinaliteit van 2 zou de gegevens in tweeën splitsen, terwijl een kardinaliteit van 1.000 ongeveer 1.000 records zou opleveren. Met zo'n lage kardinaliteit wordt de effectiviteit teruggebracht tot een lineaire sortering, en de query-optimizer zal het gebruik van de index vermijden als de kardinaliteit groter is dan 30% van het recordnummer, waardoor de index in feite een verspilling van ruimte wordt.

Dus het is beter om indexering toe te voegen aan een groep kolommen.



  1. Hoe hiaten in de sequentiële nummering in mysql te vinden?

  2. mysql update-query met subquery

  3. Hoe krijg ik asynchrone / gebeurtenisgestuurde LISTEN/NOTIFY-ondersteuning in Java met behulp van een Postgres-database?

  4. Neo4j installeren op Ubuntu 20.04