sql >> Database >  >> RDS >> Sqlserver

Verschil tussen sys.views, sys.system_views en sys.all_views in SQL Server

Drie van de systeemcatalogusweergaven in SQL Server bevatten sys.views , sys.system_views , en sys.all_views .

Deze drie catalogusweergaven bieden allemaal metadata over weergaven in de database, maar er is een subtiel verschil tussen elke weergave.

Dit is wat ze allemaal doen:

sys.views
Retourneert alle door de gebruiker gedefinieerde weergaven.
sys.system_views
Retourneert alle systeemweergaven die bij SQL Server zijn geleverd.
sys.all_views
Toont alle door de gebruiker gedefinieerde en systeemweergaven.

Met andere woorden, de laatste weergave combineert de resultaten van de vorige twee weergaven (het retourneert zowel systeem en door de gebruiker gedefinieerde weergaven).

Voorbeeld

Hier is een voorbeeld dat het verschil in resultaten van deze weergaven laat zien.

USE Music;

SELECT COUNT(*) AS [User Defined]
FROM sys.views;

SELECT COUNT(*) AS [System]
FROM sys.system_views;

SELECT COUNT(*) AS [All Views]
FROM sys.all_views;

Resultaat:

+----------------+
| User Defined   |
|----------------|
| 3              |
+----------------+
(1 row affected)
+----------+
| System   |
|----------|
| 494      |
+----------+
(1 row affected)
+-------------+
| All Views   |
|-------------|
| 497         |
+-------------+
(1 row affected)

Als we de resultaten van de eerste twee zoekopdrachten bij elkaar optellen, krijgen we hetzelfde resultaat als sys.all_views :

USE Music;

SELECT 
(SELECT COUNT(*) FROM sys.views) +
(SELECT COUNT(*) FROM sys.system_views)
AS Result;

Resultaat:

+----------+
| Result   |
|----------|
| 497      |
+----------+

  1. Het samenvoegen van meerdere tabellen retourneert de NULL-waarde

  2. SQLite MAX

  3. Verbetering van de oplossing van de bovenste/bovenste dalende mediaan

  4. Databases en instanties controleren via Activity Monitor | Problemen met SQL Server-prestaties oplossen -2