Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

Заместващ знак на SQL Server

За да отговорите на въпроса си, той трябва да бъде разглобен малко:

SELECT * има 3 основни вида недостатъци:

  • Поддръжка на кода:използването на SELECT * намалява четливостта за сложни таблици/заявки и може да причини проблеми, когато клиентско приложение очаква определен резултат от заявка, но таблицата се променя
  • Ефективност на мрежата:използването на SELECT * при връщане на резултати към клиентско приложение означава, че всички колони ще бъдат върнати на клиента; ако само някои от тези колони се използват от клиента, тогава честотната лента се губи и приложението работи по-бавно, отколкото би могло.
  • Ефективност на индексиране/план за заявка:При някои обстоятелства, ако имате заявка, която наистина трябва да върне само колоните, които участват в индекс, но вместо това вие ги връщате всичките, тогава можете да получите много по-лоши планове за заявки, създадени от двигател.

Не съм сигурен какво имате предвид под „импликация относно тълкуването на заместващи знаци“, но подозирам, че не разбирате защо SELECT * е лоша идея - SQL машината така или иначе валидира предоставените колони; цената на "разширяването" на заместващия знак е по същество 0.

Съхранената процедура всъщност не е „компилирана единица код“:планът на заявката за съхранена процедура обикновено ще бъде кеширан след първото й изпълнение, но същото всъщност важи и за ad-hoc SQL изрази също в много/повечето обстоятелства.

Сега, за да отговоря на въпроса ви:Да , всички недостатъци на използването на SELECT * в ad-hoc SQL също се прилага, еднакво, към SQL вътре в съхранена процедура.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Защо T-SQL ISNULL() съкращава низа, а COALESCE не?

  2. Как да върнете стойността на ASCII кода за даден знак в SQL Server

  3. Намерете, приоритизирайте и разрешите проблеми със SQL сървъра за минути

  4. Индексът е извън границите на масива. (Microsoft.SqlServer.smo)

  5. Изчисляване на броя на пълните месеци между две дати в SQL