2016-04-03 3 views
1

Es fällt mir schwer zu verstehen, warum ich bei der Analyse der Zeilenstruktur mehrere Einträge zu folgenden Punkten erhalte.Analysieren der Datenstruktur in SQL Server

Zuerst habe ich zwei Tabellen eingerichtet.

Ich bin in der Row/Page Struktur mit der folgenden Abfrage graben.

CREATE TABLE [Table1] 
(
    [Column1] INT IDENTITY PRIMARY KEY, 
    [Column2] VARCHAR (100), 
    [Column3] VARCHAR (20) 
) 

CREATE TABLE [Table2] 
(
    [Column1] INT IDENTITY 
     FOREIGN KEY REFERENCES [Table1]([Column1]), 
    [Column4] VARCHAR (1000) 
) 

Dann füge ich 1 Million Zeilen mit den folgenden

BEGIN TRANSACTION 

INSERT INTO [Table1] ([Column2], [Column3]) 
VALUES (REPLICATE ('2', 50), REPLICATE('3', 20)) 

INSERT INTO [Table2] ([Column4]) 
VALUES (REPLICATE ('4', 1000)) 
GO 1000000 

COMMIT TRANSACTION 

Dann der folgenden Abfrage verwenden, versuche ich, wie viele Seiten die Tabelle bilden zu sehen.

SELECT 
    [alloc_unit_type_desc] AS [Data Structure], 
    [page_count] AS [pages], 
    [record_count] AS [Rows] 
FROM 
    SYS.dm_db_index_physical_stats (DB_id(), OBJECT_ID (N'Table1'), NULL, NULL, N'detailed') 

Hier ist meine Frage: woher kommen diese anderen 41 Seiten? Wenn sie eindeutig nicht dieselben Daten enthalten? Ich sehe sie auch nicht auf dem Auswahltisch.

+1

Was ist das Ergebnis der Abfrage? –

Antwort

4

Wenn Sie index_level zur Abfrage hinzufügen, werden Sie

SELECT [alloc_unit_type_desc] AS [Data Structure], 
     [page_count]   AS [pages], 
     [record_count]   AS [Rows], 
     index_level 
FROM sys.dm_db_index_physical_stats (DB_id(), 
       OBJECT_ID (N'Table1'), NULL, NULL, N'detailed') 

enter image description here

Die Tabelle mit einem Primärschlüssel sehen erstellt wird. Dies ist standardmäßig der gruppierte Index. Der B-tree Index, dies zu unterstützen hat eine einzige Stammseite und 40 Zwischenseiten zwischen der Wurzel und den 11.112 Blattebene Seiten auf der Ebene 0.

(Struktur einen Clustered-Index from here)

enter link description here

Verwandte Themen