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

MySQL &indlejret sæt:langsom JOIN (bruger ikke indeks)

Ah, det gik lige op for mig.

Da du beder om alt i tabellen, beslutter mysql at bruge en fuld tabelscanning i stedet, da den anser det for mere effektivt.

For at få noget nøgleforbrug skal du tilføje nogle filtre for at begrænse søgningen efter hver række i alle tabellerne alligevel.

Opdaterer svar:

Din anden forespørgsel giver ikke mening. Du forbliver tilsluttet til lca, men du har et filter i det, dette negerer venstre join af sig selv. Du leder også efter data i det sidste trin af forespørgslen, hvilket betyder, at du bliver nødt til at se alle lt, lc og lca igennem for at finde dine data. Du har heller ikke noget indeks med 'type' i kolonnen længst til venstre på lokationer, så du har stadig brug for en komplet tabelscanning for at finde dine data.

Hvis du havde nogle eksempler på data og eksempler på, hvad du forsøger at opnå, ville det måske være lettere at hjælpe.



  1. Søger efter emojis i MySQL

  2. 4 måder at kontrollere for duplikerede rækker i SQL Server

  3. Tjek, om kolonnestreng i databasen er en understreng af en forespørgsel i sqlite

  4. En datamodel for handel med aktier, fonde og kryptovalutaer