sql >> Database >  >> RDS >> Sqlserver

SQL Server-jokerteken

Om uw vraag te beantwoorden, moet deze een beetje uit elkaar worden gehaald:

SELECT * heeft 3 belangrijke soorten nadelen:

  • Code-onderhoud:het gebruik van SELECT * vermindert de leesbaarheid van complexe tabellen/query's en kan problemen veroorzaken wanneer een clienttoepassing een bepaald resultaat van een query verwacht, maar de tabel verandert
  • Netwerkprestaties:het gebruik van SELECT * bij het retourneren van resultaten naar een clienttoepassing betekent dat alle kolommen worden geretourneerd naar de client; als slechts enkele van die kolommen door de client worden gebruikt, wordt bandbreedte verspild en werkt de toepassing langzamer dan zou kunnen.
  • Prestaties van indexering/queryplan:als u onder bepaalde omstandigheden een query heeft die eigenlijk alleen de kolommen hoeft te retourneren die aan een index deelnemen, maar u ze allemaal retourneert, kunt u veel slechtere queryplannen krijgen die zijn gemaakt door de motor.

Ik weet niet zeker wat je bedoelt met "implicatie met betrekking tot de interpretatie van jokertekens", maar ik vermoed dat je niet begrijpt waarom SELECT * een slecht idee is - de SQL-engine valideert de verstrekte kolommen toch; de kosten van het "uitbreiden" van de wildcard zijn in wezen 0.

Een opgeslagen procedure is niet echt een "gecompileerde code-eenheid":het queryplan voor een opgeslagen procedure wordt meestal in de cache opgeslagen nadat het voor het eerst is uitgevoerd, maar hetzelfde geldt in feite ook voor ad-hoc SQL-instructies, ook in veel/de meeste gevallen.

Om nu uw vraag daadwerkelijk te beantwoorden:Ja , eventuele nadelen van het gebruik van SELECT * in ad-hoc SQL zijn eveneens van toepassing op SQL binnen een opgeslagen procedure.




  1. SQL Variabele +1 uitvoeren totdat Variabele 52 bereikt?

  2. Voeg twee kolommen samen, meerdere rijen en negeer duplicaten - MySQL

  3. Interactie van SELECT FOR UPDATE-vergrendeling met cursor en batch-DML

  4. Klassieke ASP MySQL Verkeerde verificatiemethode