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

Optimer en ORDER BY-forespørgsel

Der er en grænse for, hvor meget optimering du kan foretage på ORDER BY-klausuler. Den primære, der nogle gange hjælper, er at have et indeks på det korrekte sæt kolonner i den rigtige rækkefølge. Så for dit eksempel, et (enkelt, sammensat) indeks på:

average_price_per_month ASC, phone_price_guestimate DESC, contract_length ASC

kan hjælpe, men optimeringsværktøjet kan stadig beslutte, at det er bedre at bruge et andet indeks til at håndtere filtertermerne i forespørgslen, og så vil den selv sortere de valgte data. Bemærk, at medmindre indekset leverer dataene i nøjagtig den korrekte sorterede rækkefølge, og brugen af ​​indekset fremskynder forespørgslen generelt, så vil optimeringsværktøjet ikke bruge det. Et indeks på kun én af kolonnerne, der skal sorteres, er en begrænset fordel for optimeringsværktøjet, og det vil normalt ikke bruge et sådant indeks.

Et spørgsmål at overveje:

  • Hvor hurtigt udfører forespørgslen uden ORDER BY-klausulen.

Det giver dig en meget direkte måling af omkostningerne ved sortering. Du nævner 20 ms uden bestilling og 120 ms ved bestilling, så BESTIL BY er moderat dyr. Det næste spørgsmål kan være "Kan du udkonkurrere sin slags i din ansøgning?". Du kan muligvis gøre det, men sorteringspakken i et DBMS er normalt ret godt optimeret, og du skal sandsynligvis arbejde hårdt for at slå den.



  1. hent data grupperet efter måned ved hjælp af mysql-interval

  2. Trin til at installere MySQL8 på CentOS

  3. Sådan kopieres en tabel fra en mysql-database til en anden mysql-database

  4. Forhåndsvisning af dokumenter i Microsoft Access-formular