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

Min simple MySql-forespørgsel bruger ikke indeks

Jeg gætter på, at du har få rækker i 'kommentarer'-tabellen, det er derfor, MySQL laver en fuld tabelscanning i stedet for at bruge indekset i din første forespørgsel. Det estimeres, at omkostningerne ved en fuld tabelscanning kan være lavere end først at matche indekset og derefter slå rækkerne op.

I din anden forespørgsel bruger du indekset, fordi det er muligt at få alle kolonnerne i forespørgslen ('id'-kolonnen) direkte fra indekset uden behov for at slå tabelrækkerne op efter at have matchet indekset. Dette er betydningen af ​​"Brug af indeks" ekstra information.

Prøv, hvis MySQL med et betydeligt antal rækker i 'kommentarer' stadig bruger en fuld scanning, synes jeg, det ville være en mærkelig opførsel. Faktisk har jeg testet nøjagtig det samme i en MySQL version 5.1, og den bruger altid 'indekset' selv med få rækker.



  1. MySql:Vælg elementer, der har alle værdierne

  2. Sådan ændres tabel i Oracle

  3. Sådan får du en hierarkisk php-struktur fra en db-tabel, i php-array eller JSON

  4. Sådan får du året fra en Datetime-kolonne i MySQL