Brug select *
i din kode er, hvad jeg vil kalde doven programmering, med flere grimme bivirkninger. Hvor meget du oplever disse bivirkninger, vil variere, men det er aldrig positivt.
Jeg vil bruge nogle af de punkter, der allerede er nævnt i andre svar, men du er velkommen til at redigere mit svar og tilføje nogle flere negative punkter om brugen af select *
.
-
Du sender flere data fra SQL-motoren til din kode end nødvendigt, hvilket har en negativ effekt på ydeevnen.
-
De oplysninger, du får tilbage, skal placeres i variabler (f.eks. en rekordvariabel). Dette vil tage mere PGA-hukommelse end nødvendigt.
-
Ved at bruge
select *
du vil aldrig bruge et indeks alene til at hente de ønskede oplysninger, du skal også altid besøge tabellen (forudsat at der ikke findes et indeks, som indeholder alle kolonner i tabellen). Igen med en negativ effekt på ydeevnen. -
Mindre klart for folk, der vedligeholder din kode, hvad din hensigt er. De skal dykke ned i koden for at få øje på alle forekomster af din registreringsvariabel for at vide, hvad der bliver hentet.
-
Du vil ikke bruge SQL-funktioner til at udføre beregninger, men altid stole på PL/SQL- eller Java-beregninger. Du går muligvis glip af nogle fantastiske SQL-forbedringer som analytiske funktioner, modelklausul, rekursiv subquery factoring og lignende.
-
Fra Oracle11 og fremefter spores afhængigheder på kolonneniveau, hvilket betyder, at når du bruger
select *
, din kode bliver markeret i dataordbogen som "afhængig af alle kolonner" i den tabel. Din procedure vil blive ugyldig, når der sker noget med en af disse kolonner. Så brug af select * betyder, at din kode bliver ugyldiggjort oftere end nødvendigt.
Igen, du er velkommen til at tilføje dine egne point.