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

Hvordan optimerer man databasen denne forespørgsel i en stor database?

Du har ingen indekser udover den primære nøgle. Du skal lave indeks på felter, som du bruger i din WHERE-sætning. Hvis du kun skal indeksere 1 felt eller en kombination af flere felter afhænger af de andre SELECT'er, du vil køre mod den tabel.

Husk at REGEXP kan slet ikke bruge indekser, LIKE kan kun bruge indeks, når det ikke begynder med jokertegn (så LIKE 'a%' kan bruge indeks, men LIKE '%a' kan ikke), større end / mindre end (<>) bruger normalt heller ikke indekser.

Så du står tilbage med code og check felter. Jeg formoder, at mange rækker vil have den samme værdi for check , så jeg ville begynde indekset med code Mark. Multifeltindekser kan kun bruges i den rækkefølge, de er defineret i...

Forestil dig et indeks oprettet for felter code, check . Dette indeks kan bruges i din forespørgsel (hvor WHERE-sætningen indeholder begge felter), også i forespørgslen med kun code felt, men ikke i forespørgsel med kun check felt.

Er det vigtigt at ORDER BY id ? Hvis ikke, så udelad det, det vil forhindre sorteringen, og din forespørgsel afsluttes hurtigere.



  1. Konverter SQL til SQL alkymi

  2. Beregn gennemsnit, varians og standardafvigelse af to tal i to forskellige rækker/kolonner med sql / PHP på bestemte datoer

  3. SQLite ÆNDRINGSTABEL

  4. Sådan får du det korte månedsnavn fra en dato i MySQL