sql >> Database >  >> RDS >> Mysql

MySQL &geneste set:slow JOIN (geen index gebruiken)

Ah, het viel me net op.

Omdat je om alles in de tabel vraagt, besluit mysql om in plaats daarvan een volledige tabelscan te gebruiken, omdat het dit efficiënter acht.

Om wat sleutelgebruik te krijgen, voegt u enkele filters toe om het zoeken naar elke rij in alle tabellen toch te beperken.

Antwoord bijwerken:

Je tweede vraag slaat nergens op. Je blijft lid worden van lca, maar je hebt er een filter in, dit negeert de left join vanzelf. U zoekt ook naar gegevens in de laatste stap van de zoekopdracht, wat betekent dat u alle lt, lc en lca moet doorzoeken om uw gegevens te vinden. Ook heb je geen index met meest linkse kolom 'type' op locaties, dus je hebt nog steeds een volledige tabelscan nodig om je gegevens te vinden.

Als je wat voorbeeldgegevens en een voorbeeld had van wat je probeert te bereiken, zou het misschien gemakkelijker zijn om te helpen.



  1. Vind alle niet-numerieke waarden in een kolom in MariaDB

  2. Puma Cluster-configuratie op Heroku

  3. Converteren van DateTime naar INT

  4. Verschil tussen ANSI- en Unicode-stuurprogramma's van MySQL