sql >> Database >  >> RDS >> Mysql

Mijn eenvoudige MySql-query gebruikt geen index

Ik vermoed dat je weinig rijen hebt in de 'opmerkingen'-tabel, dit is de reden waarom MySQL een volledige tabelscan uitvoert in plaats van de index te gebruiken in je eerste query. Er wordt geschat dat de kosten van een volledige tabelscan lager kunnen zijn dan eerst de index te matchen en vervolgens de rijen op te zoeken.

In uw tweede query gebruikt u de index omdat het mogelijk is om alle kolommen van de query (de 'id'-kolom) rechtstreeks uit de index te halen zonder dat u de tabelrijen hoeft op te zoeken na het matchen met de index. Dit is de betekenis van "Index gebruiken" extra informatie.

Probeer als MySQL met een aanzienlijk aantal rijen in 'opmerkingen' nog steeds een volledige scan gebruikt, ik denk dat het een vreemd gedrag zou zijn. In feite heb ik precies hetzelfde getest in een MySQL-versie 5.1 en het gebruikt altijd de 'index', zelfs met een paar rijen.



  1. Geserialiseerde gegevens repareren die zijn verbroken door het bewerken van de MySQL-database in een teksteditor?

  2. Drie tabellen samenvoegen met MySQL

  3. Hooks worden niet geactiveerd bij het invoegen van onbewerkte query's via sequelize.query()

  4. mysqli_error() verwacht precies 1 parameter, 0 gegeven