Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Symbol wieloznaczny serwera SQL

Aby odpowiedzieć na twoje pytanie, należy je trochę rozebrać:

SELECT * ma 3 główne rodzaje wad:

  • Obsługa kodu:użycie SELECT * zmniejsza czytelność złożonych tabel/zapytań i może powodować problemy, gdy aplikacja kliencka oczekuje określonego wyniku zapytania, ale tabela się zmienia
  • Wydajność sieci:użycie SELECT * podczas zwracania wyników do aplikacji klienckiej oznacza, że ​​wszystkie kolumny zostaną zwrócone do klienta; jeśli tylko niektóre z tych kolumn są używane przez klienta, wówczas przepustowość jest marnowana, a aplikacja działa wolniej niż mogłaby.
  • Indeksowanie/wydajność planu zapytań:W pewnych okolicznościach, jeśli masz zapytanie, które naprawdę musi zwrócić tylko kolumny uczestniczące w indeksie, ale zamiast tego zwracasz je wszystkie, możesz uzyskać znacznie gorsze plany zapytań utworzone przez silnik.

Nie jestem pewien, co rozumiesz przez "implikację dotyczącą interpretacji symboli wieloznacznych", ale podejrzewam, że nie rozumiesz, dlaczego SELECT * to zły pomysł - silnik SQL i tak sprawdza poprawność dostarczonych kolumn; koszt „rozszerzenia” symbolu wieloznacznego wynosi zasadniczo 0.

Procedura składowana nie jest tak naprawdę „skompilowaną jednostką kodu”:plan zapytania dla procedury składowanej jest zwykle buforowany po pierwszym uruchomieniu, ale to samo dotyczy instrukcji SQL ad hoc również w wielu/większości przypadków.

Teraz, aby odpowiedzieć na Twoje pytanie:Tak , wszelkie wady używania SELECT * w ad-hoc SQL stosuje się również w równym stopniu do SQL wewnątrz procedury składowanej.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Nie można użyć nazwy aliasu w klauzuli WHERE, ale można w ORDER BY

  2. Jak uzyskać Visual Studio 2008 do edycji projektów raportów SSRS 2005 bez instalowania SQL Business Intelligence Development Studio 2005?

  3. @@ROWCOUNT — Uzyskaj liczbę wierszy, których dotyczy ostatnia instrukcja w SQL Server

  4. Łączenie ciągów instrukcji SQL select

  5. Alternatywa dla operatora MAX na polach bitowych