sql >> Databasteknik >  >> RDS >> Sqlserver

SQL Server jokertecken

För att svara på din fråga måste den plockas isär lite:

SELECT * har tre huvudtyper av nackdelar:

  • Kodunderhåll:att använda SELECT * minskar läsbarheten för komplexa tabeller/frågor och kan orsaka problem när en klientapplikation förväntar sig ett visst resultat från en fråga, men tabellen ändras
  • Nätverksprestanda:att använda SELECT * när resultat returneras till en klientapplikation innebär att alla kolumner kommer att returneras till klienten; om bara några av dessa kolumner används av klienten, slösas bandbredd bort och programmet körs långsammare än det kunde.
  • Indexerings-/frågeplansprestanda:Under vissa omständigheter, om du har en fråga som egentligen bara behöver returnera kolumnerna som deltar i ett index, men du returnerar dem alla istället, kan du få mycket sämre frågeplaner skapade av motor.

Jag är inte säker på vad du menar med "implikation angående jokerteckentolkning", men jag misstänker att du missförstår varför SELECT * är en dålig idé - SQL-motorn validerar angivna kolumner i alla fall; kostnaden för att "expandera" jokertecknet är i huvudsak 0.

En lagrad procedur är egentligen inte en "kompilerad kodenhet":frågeplanen för en lagrad procedur cachelagras vanligtvis efter att den körts första gången, men detsamma gäller faktiskt för ad-hoc SQL-satser också i många/de flesta fall.

För att faktiskt svara på din fråga:Ja , eventuella nackdelar med att använda SELECT * i ad-hoc SQL gäller även SQL i en lagrad procedur.




  1. Parameteriserade frågor i PHP med MySQL-anslutning

  2. Välj från flera partitioner samtidigt

  3. bästa sättet att importera data till mysql

  4. Anropar Oracles lagrade procedur med utdataparameter från SQL Server