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

Er det dårligt for ydeevnen at vælge alle kolonner?

Problemet her er ikke så meget et spørgsmål om databaseserveren, som blot netværkskommunikationen. Ved at vælge alle kolonner på én gang, beder du serveren om at vende tilbage til dig, alle kolonner på én gang. Hvad angår bekymringer over IO og alt det der, er disse behandlet pænt i spørgsmålet og svaret @Karamba gav i en kommentar:vælg * vs vælg kolonne . Men for de fleste applikationer i den virkelige verden (og jeg bruger "applikationer" i enhver forstand), er den største bekymring kun netværkstrafik, og hvor lang tid det tager at serialisere, transmittere og derefter deserialisere dataene. Selvom svaret i virkeligheden er det samme begge veje.

Så det er fantastisk at trække alle kolonnerne tilbage, hvis du har til hensigt at bruge dem alle, men det kan være en masse ekstra dataoverførsel, især hvis du f.eks. gemmer lange strenge i dine kolonner. I mange tilfælde vil forskellen selvfølgelig være uopdagelig og er for det meste blot et principspørgsmål. Ikke alle, men et betydeligt flertal.

Det er egentlig bare en afvejning mellem din førnævnte dovenskab (og tro mig, vi har det alle sammen) nu og hvor vigtig præstation virkelig er. er.

Når det er sagt, hvis du gør har til hensigt at bruge alle kolonneværdierne, er du meget bedre stillet at trække dem alle tilbage på én gang, så sender du en masse forespørgsler.

Tænk på det som at lave en websøgning:du laver din søgning, du finder din side, og du behøver kun én detalje. Du kan læse hele siden og vide alt om emnet, eller du kan bare springe til delen om, hvad du leder efter og blive færdig. Sidstnævnte er meget hurtigere, hvis det er alt, hvad du nogensinde ønsker, men hvis du så skal lære om de andre aspekter, ville du være meget bedre stillet at læse dem første gang end at skulle søge igen og finde webstedet for at tale om det.

Hvis du ikke er sikker på, om du får brug for de andre kolonneværdier i fremtiden, så er det din opfordring til at gøre som udvikler, hvilket tilfælde er mere sandsynligt.

Det hele afhænger af, hvad dit program er, hvad dine data er, hvordan du bruger det, og hvor vigtig ydeevne virkelig er. er til dig.



  1. SQL Server bcp Utility og den numeriske datatype

  2. Hvordan man deler en streng efter et bestemt tegn i SQL Server og opdaterer denne værdi til en bestemt kolonne

  3. Graals:fejl i SQL-syntaks ved ændring af dvaledialekten

  4. SqlParameter tillader ikke tabelnavn - andre muligheder uden sql-injektionsangreb?