sql >> Databasteknik >  >> RDS >> Mysql

Hur man optimerar databasen denna fråga i stor databas?

Du har inga index förutom primärnyckeln. Du måste göra index på fält som du använder i din WHERE-sats. Om du bara behöver indexera ett fält eller en kombination av flera fält beror på de andra SELECT som du kommer att köra mot den tabellen.

Tänk på att REGEXP kan inte använda index alls, LIKE kan bara använda index när det inte börjar med jokertecken (så LIKE 'a%' kan använda index, men LIKE '%a' kan inte), större än / mindre än (<>) använder vanligtvis inte index också.

Så du har kvar code och check fält. Jag antar att många rader kommer att ha samma värde för check , så jag skulle börja indexet med code fält. Flerfältsindex kan endast användas i den ordning som de definieras...

Föreställ dig index skapat för fält code, check . Detta index kan användas i din fråga (där WHERE-satsen innehåller båda fälten), även i frågan med endast code fältet, men inte i fråga med endast check fältet.

Är det viktigt att ORDER BY id ? Om inte, lämna det ute, det kommer att förhindra sorteringen och din fråga kommer att avslutas snabbare.



  1. Optimera PostgreSQL för snabb testning

  2. Få Visa information med VIEWS Information Schema View i SQL Server

  3. Reparera alla bord på en gång

  4. Få data mellan två datum på MySQL