sql >> Database >  >> RDS >> Mysql

Hoe bouw je in MySQL een index om deze zoekopdracht te versnellen?

Om echt een antwoord te geven zou het handig zijn om te kijken of je al bestaande indexen hebt, maar...

Dit alles veronderstelt dat tabel 't' bestaat en dat u een index moet toevoegen en dat u momenteel slechts één enkele index op uw primaire sleutel heeft of helemaal geen indexen.

Een dekkende index voor de query geeft de beste prestaties voor uw behoeften, maar met elke index offert u enige invoegsnelheid op. Hoeveel die opoffering ertoe doet, hangt af van het profiel van uw toepassing. Als je voornamelijk van de tafel leest, maakt het niet veel uit. Als je maar een paar indexen hebt, maakt zelfs een matige schrijfbelasting niet uit. Beperkte opslagruimte voor uw tafels kan ook een rol spelen... U moet de uiteindelijke afweging maken en of deze merkbaar is. Het mooie is dat het een vrij constante hit is. Doorgaans vertraagt ​​het toevoegen van een index uw invoegingen niet exponentieel, alleen lineair.

Hoe dan ook, hier zijn uw opties voor de beste geselecteerde prestaties:

  1. Als c3 uw primaire sleutel is voor tabel t, kunt u niets beters doen in de query om deze sneller te maken met een index.
  2. Ervan uitgaande dat c1 uw primaire sleutel is t:

    ALTER TABLE t ADD INDEX covering_index (c3,c2);  
    
  3. Als c1 niet jouw pk is (en ook niet c2), gebruik dan dit:

    ALTER TABLE t ADD INDEX covering_index (c3,c2,c1);  
    
  4. Als c2 je PK is, gebruik dan dit:

    ALTER TABLE t ADD INDEX covering_index (c3,c1);  
    
  5. Als ruimte op de schijf of invoegsnelheid een probleem is, kunt u ervoor kiezen om een ​​puntindex te maken. Je zult wat prestaties inleveren, maar als je zwaar insteekt, is dit misschien de juiste optie:

    ALTER TABLE t ADD INDEX a_point_index (c3);  
    


  1. Hoe de laatste 6 maanden uit de nieuwstabel te selecteren met MySQL

  2. Mysql-query gebruikt geen index als er variabelen zijn in WHERE

  3. Sequelize:Concat-velden in WHERE LIKE-clausule

  4. Het oplossen van onjuiste tekencodering bij het weergeven van MySQL-databaseresultaten na upgrade naar PHP 5.3