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

MIN/MAX vs ORDER BY og LIMIT

I værste fald, hvor du ser på et uindekseret felt, ved hjælp af MIN() kræver en enkelt fuld gennemgang af bordet. Bruger SORT og LIMIT kræver en filsortering. Hvis det køres mod et stort bord, vil der sandsynligvis være en betydelig forskel i den oplevede ydeevne. Som et anekdotisk datapunkt, MIN() tog .36s, mens SORT og LIMIT tog .84s mod en tabel med 106.000 rækker på min udviklerserver.

Hvis du imidlertid ser på en indekseret kolonne, er forskellen sværere at bemærke (meningsløst datapunkt er 0,00s i begge tilfælde). Ser man på outputtet af forklar, ser det dog ud som MIN() er i stand til blot at plukke den mindste værdi fra indekset ('Vælg tabeller optimeret væk' og 'NULL' rækker), mens SORT og LIMIT mangler stadig at foretage en ordnet gennemgang af indekset (106.000 rækker). Den faktiske præstationspåvirkning er sandsynligvis ubetydelig.

Det ligner MIN() er vejen at gå - det er hurtigere i værste fald, i bedste fald ikke til at skelne, er standard SQL og udtrykker tydeligst den værdi, du forsøger at få. Det eneste tilfælde, hvor det ser ud til at bruge SORT og LIMIT ville være ønskeligt, da mson nævnt, hvor du skriver en generel operation, der finder de øverste eller nederste N-værdier fra vilkårlige kolonner, og det er ikke værd at skrive operationen i særlige tilfælde ud.



  1. Spørgsmål at stille, før du starter en database

  2. Find ud af hvilket operativsystem SQL Server kører på (T-SQL eksempel)

  3. Sådan viser du tabel fremmednøgler

  4. PHP mysql søg i flere tabeller ved hjælp af et nøgleord