sql >> Database teknologi >  >> RDS >> Mysql

MySQL tabelindeksoptimering

Et indeks på tidsstempelkolonnen og bruger-id ville være nyttigt. Du skal være i stand til at læse outputtet af en EXPLAIN Statement.

Gå til MySQL og gør følgende:

EXPLAIN SELECT timestamp, username, [a few more] FROM log 
WHERE timestamp  BETWEEN '2012-03-30 08:00:00' AND '2012-03-30 16:00:00' 
AND username='XX' 

Dette viser dig den plan, MySQL bruger til at udføre forespørgslen. Der vil være kolonne kaldet nøgle. Dette angiver hvilket indeks MySQL bruger i forespørgslen. Jeg formoder, at du vil se ALT der, hvilket betyder, at MySQL scanner bordet fra top til bund og matcher hver række mod din where-klausul. Opret nu et indeks på tidsstemplet og brugerid-kolonnerne. Kør EXPLAIN-sætningen igen. Du bør se det indeks, du oprettede, i nøglekolonnen.

Hvis MySQL bruger indekset, bør din forespørgsel være betydeligt hurtigere. Bare husk ikke at overindeksere. Indekser gør indsættelser, opdateringer og sletninger langsommere. Når du indsætter en ny række i en tabel, og der er tre indekser på tabellen, skal den nye række skrive 3 værdier til de tre forskellige indekser. Så det er et tveægget sværd.




  1. Hvordan kan du se, om en PL/SQL-pakke, -procedure eller -funktion bliver brugt?

  2. Hvordan kan jeg oprette en kopi af en Oracle-tabel uden at kopiere dataene?

  3. Find Weblogic Server Version/Patches i EBS R12.2/ Standalone Weblogic

  4. SQL - to måneder fra dagens dato i Oracle