sql >> Database teknologi >  >> RDS >> Sqlserver

SQL Server:skal jeg bruge informationsskema-tabeller over sys-tabeller?

Medmindre du skriver et program, som du med sikkerhed ved skal være bærbart, eller du kun vil have ganske grundlæggende information, ville jeg som standard blot bruge de proprietære SQL Server-systemvisninger til at begynde med.

Information_Schema visninger viser kun objekter, der er kompatible med SQL-92-standarden. Dette betyder, at der ikke er nogen informationsskemavisning for selv ganske basale konstruktioner som f.eks. indekser (disse er ikke defineret i standarden og efterlades som implementeringsdetaljer). Endsige eventuelle SQL Server-proprietære funktioner.

Derudover er det ikke helt universalmidlet for bærbarhed, som man kan antage. Implementeringerne er stadig forskellige mellem systemerne. Oracle implementerer det slet ikke "ud af boksen", og MySql-dokumenterne siger:

Brugere af SQL Server 2000 (som også følger standarden) kan bemærke en stærk lighed. MySQL har dog udeladt mange kolonner, der ikke er relevante for vores implementering, og tilføjet kolonner, der er MySQL-specifikke. En sådan kolonne er ENGINE-kolonnen i tabellen INFORMATION_SCHEMA.TABLES.

Selv for brød og smør SQL-konstruktioner såsom fremmednøglebegrænsninger er Information_Schema visninger kan være dramatisk mindre effektive at arbejde med end sys. visninger, da de ikke afslører objekt-id'er, der ville tillade effektiv forespørgsel.

for eksempel. Se spørgsmålet SQL-forespørgsel langsommere fra 1 sekund til 11 minutter - hvorfor? og udførelsesplaner.

INFORMATION_SCHEMA

sys



  1. Sådan viser du tabel fremmednøgler

  2. Sådan installeres SQL Server på en Mac med VirtualBox

  3. Sådan bruger du stopord og stopliste til at forbedre SQL Server Full-Text Search (FTS)

  4. Hvordan får man vist typen af ​​en variabel i PL/SQL?