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

SQL Server:czy powinienem używać tabel information_schema zamiast tabel sys?

O ile nie piszesz aplikacji, o której wiesz, że będzie musiała być przenośna lub potrzebujesz tylko dość podstawowych informacji, domyślnie używałbym zastrzeżonych widoków systemowych SQL Server na początek.

Information_Schema widoki pokazują tylko obiekty zgodne ze standardem SQL-92. Oznacza to, że nie ma widoku schematu informacji dla nawet dość podstawowych konstrukcji, takich jak indeksy (nie są one zdefiniowane w standardzie i są pozostawione jako szczegóły implementacji). Nie mówiąc już o jakichkolwiek własnościowych funkcjach SQL Server.

Ponadto, jak można by przypuszczać, nie jest to panaceum na przenośność. Implementacje nadal różnią się między systemami. Oracle w ogóle nie implementuje go „po wyjęciu z pudełka”, a dokumentacja MySql mówi:

Użytkownicy SQL Server 2000 (który również jest zgodny ze standardem) mogą zauważyć duże podobieństwo. Jednak MySQL pominął wiele kolumn, które nie są istotne dla naszej implementacji, i dodał kolumny, które są specyficzne dla MySQL. Jedną z takich kolumn jest kolumna ENGINE w tabeli INFORMATION_SCHEMA.TABLES.

Nawet w przypadku konstrukcji typu bread and butter SQL, takich jak ograniczenia klucza obcego, Information_Schema widoki mogą być znacznie mniej wydajne w obsłudze niż sys. widoki, ponieważ nie ujawniają identyfikatorów obiektów, które umożliwiłyby wydajne zapytania.

np. Zobacz pytanie spowolnienie zapytań SQL z 1 sekundy do 11 minut - dlaczego? i plany wykonania.

INFORMATION_SCHEMA

system



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Node.js MSSQL tedius ConnectionError:nie udało się połączyć z hostem lokalnym:1433 - połącz ECONNREFUSED

  2. Jak dodać grupę użytkowników Active Directory jako login w SQL Server

  3. Modyfikowanie zadania agenta serwera SQL (T-SQL)

  4. Zaktualizuj krok zadania dla zadania agenta programu SQL Server (T-SQL)

  5. SQL - Jak przechowywać i nawigować w hierarchiach?