sql >> Databasteknik >  >> RDS >> Sqlserver

SQL Server:ska jag använda information_schema-tabeller över sys-tabeller?

Såvida du inte skriver ett program som du med säkerhet vet måste vara portabelt eller om du bara vill ha ganska grundläggande information, skulle jag bara använda de egna SQL Server-systemvyerna till att börja med.

Information_Schema vyer visar endast objekt som är kompatibla med SQL-92-standarden. Detta innebär att det inte finns någon informationsschemavy för ens ganska grundläggande konstruktioner som index (dessa är inte definierade i standarden och lämnas som implementeringsdetaljer.) Än mindre några egna SQL Server-funktioner.

Dessutom är det inte riktigt universalmedlet för portabilitet som man kan anta. Implementeringarna skiljer sig fortfarande åt mellan systemen. Oracle implementerar det inte "out of the box" alls och MySql-dokumenten säger:

Användare av SQL Server 2000 (som också följer standarden) kan märka en stark likhet. MySQL har dock utelämnat många kolumner som inte är relevanta för vår implementering och lagt till kolumner som är MySQL-specifika. En sådan kolumn är ENGINE-kolumnen i tabellen INFORMATION_SCHEMA.TABLES.

Även för bröd och smör SQL-konstruktioner som t.ex. främmande nyckelbegränsningar Information_Schema vyer kan vara dramatiskt mindre effektiva att arbeta med än sys. vyer eftersom de inte exponerar objekt-ID som skulle möjliggöra effektiv sökning.

t.ex. Se frågan SQL-fråga sakta ner från 1 sekund till 11 minuter - varför? och genomförandeplaner.

INFORMATION_SCHEMA

sys



  1. 5 Microsoft Access tips och tricks

  2. Hur man uppdaterar befintliga data med SQLite

  3. Sparse Columns i SQL Server:Inverkan på tid och rum

  4. SQL Server-databaser CPU-användningsstatistik