Schätzen der Größe eines nicht gruppierten IndexEstimate the Size of a Nonclustered Index

GILT FÜR: jaSQL ServerjaAzure SQL-DatenbankneinAzure SQL Data Warehouse neinParallel Data WarehouseAPPLIES TO: yesSQL Server yesAzure SQL Database noAzure SQL Data Warehouse noParallel Data Warehouse

Befolgen Sie diese Schritte, um abzuschätzen, wie viel Speicherplatz zum Speichern eines nicht gruppierten Index erforderlich ist.Follow these steps to estimate the amount of space that is required to store a nonclustered index:

  1. Berechnen Sie die Variablen zur Verwendung in Schritt 2 und 3.Calculate variables for use in steps 2 and 3.

  2. Berechnen Sie den Speicherplatz, der zum Speichern der Indexinformationen in der Blattebene des nicht gruppierten Index verwendet wird.Calculate the space used to store index information in the leaf level of the nonclustered index.

  3. Berechnen Sie den Speicherplatz, der zum Speichern der Indexinformationen in den inneren Knotenebenen des nicht gruppierten Index verwendet wird.Calculate the space used to store index information in the non-leaf levels of the nonclustered index.

  4. Addieren Sie die berechneten Werte.Total the calculated values.

Schritt 1:Step 1. Berechnen der zu verwendenden Variablen in Schritt 2 und 3Calculate Variables for Use in Steps 2 and 3

Mit den folgenden Schritten können Sie die Variablen berechnen, mit denen die Größe des Speicherplatzes geschätzt wird, die zum Speichern der oberen Ebenen des Indexes erforderlich ist.You can use the following steps to calculate variables that are used to estimate the amount of space that is required to store the upper levels of the index.

  1. Geben Sie die Anzahl der Zeilen an, die die Tabelle enthalten wird:Specify the number of rows that will be present in the table:

    Num_Rows = Anzahl der Zeilen in der TabelleNum_Rows = number of rows in the table

  2. Geben Sie die Anzahl der Spalten mit fester und mit variabler Länge im Indexschlüssel an, und berechnen Sie den Speicherplatz, der für deren Speicherung erforderlich ist:Specify the number of fixed-length and variable-length columns in the index key and calculate the space that is required for their storage:

    Die Schlüsselspalten eines Indexes können Spalten fester und variabler Länge enthalten.The key columns of an index can include fixed-length and variable-length columns. Um die Größe der Indexzeilen auf der inneren Ebene zu schätzen, müssen Sie den Speicherplatz berechnen, der von jeder dieser Spaltengruppen innerhalb der Indexzeile belegt wird.To estimate the interior level index row size, calculate the space that each of these groups of columns occupies within the index row. Die Größe einer Spalte hängt von der Angabe für Datentyp und -länge ab.The size of a column depends on the data type and length specification.

    Num_Key_Cols = Gesamtanzahl der Schlüsselspalten (fester und variabler Länge)Num_Key_Cols = total number of key columns (fixed-length and variable-length)

    Fixed_Key_Size = Gesamtzahl der Bytes in allen Schlüsselspalten fester LängeFixed_Key_Size = total byte size of all fixed-length key columns

    Num_Variable_Key_Cols = Anzahl der Schlüsselspalten variabler LängeNum_Variable_Key_Cols = number of variable-length key columns

    Max_Var_Key_Size = Maximale Bytegröße aller Schlüsselspalten variabler LängeMax_Var_Key_Size = maximum byte size of all variable-length key columns

  3. Berücksichtigen Sie auch den Datenzeilenlokator, der erforderlich ist, wenn der Index nicht eindeutig ist:Account for the data row locator that is required if the index is nonunique:

    Wenn der nicht gruppierte Index nicht eindeutig ist, wird der Datenzeilenlokator mit dem Schlüssel des nicht gruppierten Indexes kombiniert, um einen eindeutigen Schlüsselwert für jede Zeile zu erstellen.If the nonclustered index is nonunique, the data row locator is combined with the nonclustered index key to produce a unique key value for every row.

    Wenn sich der nicht gruppierte Index über einem Heap befindet, ist der Datenzeilenlokator die Heap-RID.If the nonclustered index is over a heap, the data row locator is the heap RID. Die Größe beträgt dann 8 Byte.This is a size of 8 bytes.

    Num_Key_Cols = Num_Key_Cols + 1Num_Key_Cols = Num_Key_Cols + 1

    Num_Variable_Key_Cols = Num_Variable_Key_Cols + 1Num_Variable_Key_Cols = Num_Variable_Key_Cols + 1

    Max_Var_Key_Size = Max_Var_Key_Size + 8Max_Var_Key_Size = Max_Var_Key_Size + 8

    Wenn sich der nicht gruppierte Index über einem gruppierten Index befindet, dann ist der Datenzeilenlokator der Gruppierungsschlüssel.If the nonclustered index is over a clustered index, the data row locator is the clustering key. Bei den Spalten, die mit dem nicht gruppierten Index kombiniert werden müssen, handelt es sich um die im Gruppierungsschlüssel enthaltenen Spalten, die noch nicht in der Menge der nicht gruppierten Indexschlüsselspalten vorhanden sind.The columns that must be combined with the nonclustered index key are those columns in the clustering key that are not already present in the set of nonclustered index key columns.

    Num_Key_Cols = Num_Key_Cols + Anzahl der Gruppierungsschlüsselspalten, die nicht in der Menge der nicht gruppierten Indexschlüsselspalten vorhanden sind (+ 1, wenn der gruppierte Index nicht eindeutig ist)Num_Key_Cols = Num_Key_Cols + number of clustering key columns not in the set of nonclustered index key columns (+ 1 if the clustered index is nonunique)

    Fixed_Key_Size = Fixed_Key_Size + Gesamtanzahl der Bytes in allen Gruppierungsschlüsselspalten fester Länge, die nicht in der Menge der nicht gruppierten Indexschlüsselspalten vorhanden sindFixed_Key_Size = Fixed_Key_Size + total byte size of fixed-length clustering key columns not in the set of nonclustered index key columns

    Num_Variable_Key_Cols = Num_Variable_Key_Cols + Anzahl der Gruppierungsschlüsselspalten variabler Länge, die nicht in der Menge der nicht gruppierten Indexschlüsselspalten vorhanden sind (+ 1, wenn der gruppierte Index nicht eindeutig ist)Num_Variable_Key_Cols = Num_Variable_Key_Cols + number of variable-length clustering key columns not in the set of nonclustered index key columns (+ 1 if the clustered index is nonunique)

    Max_Var_Key_Size = Max_Var_Key_Size + maximale Anzahl der Bytes in den Gruppierungsschlüsselspalten variabler Länge, die nicht in der Menge der nicht gruppierten Indexschlüsselspalten vorhanden sind (+ 4, wenn der gruppierte Index nicht eindeutig ist)Max_Var_Key_Size = Max_Var_Key_Size + maximum byte size of variable-length clustering key columns not in the set of nonclustered index key columns (+ 4 if the clustered index is nonunique)

  4. Ein Teil der Zeile, der als NULL-Bitmuster bezeichnet wird, kann für das Verwalten der NULL-Zulässigkeit der Spalte reserviert sein.Part of the row, known as the null bitmap, may be reserved to manage column nullability. Berechnen Sie dessen Größe:Calculate its size:

    Wenn der Indexschlüssel Spalten enthält, die NULL-Werte zulassen (einschließlich erforderlicher Gruppierungsschlüsselspalten wie in Schritt 1.3 beschrieben), ist ein Teil der Indexzeile für das NULL-Bitmuster reserviert.If there are nullable columns in the index key, including any necessary clustering key columns as described in Step 1.3, part of the index row is reserved for the null bitmap.

    Index_Null_Bitmap = 2 + ((Anzahl der Spalten in der Indexzeile + 7) / 8)Index_Null_Bitmap = 2 + ((number of columns in the index row + 7) / 8)

    Nur der ganzzahlige Teil des vorherigen Ausdrucks darf verwendet werden.Only the integer part of the previous expression should be used. Der Rest wird verworfen.Discard any remainder.

    Wenn keine Schlüsselspalten vorhanden sind, die NULL-Werte zulassen, legen Sie Index_Null_Bitmap auf 0 fest.If there are no nullable key columns, set Index_Null_Bitmap to 0.

  5. Berechnen Sie die Größe der Daten variabler Länge:Calculate the variable length data size:

    Wenn der Indexschlüssel Spalten variabler Länge enthält (einschließlich erforderlicher Schlüsselspalten des gruppierten Indexes), müssen Sie ermitteln, wie viel Speicherplatz zum Speichern der Spalten innerhalb der Indexzeile verwendet wird:If there are variable-length columns in the index key, including any necessary clustered index key columns, determine how much space is used to store the columns within the index row:

    Variable_Key_Size = 2 + (Num_Variable_Key_Cols x 2) + Max_Var_Key_SizeVariable_Key_Size = 2 + (Num_Variable_Key_Cols x 2) + Max_Var_Key_Size

    Die zu Max_Var_Key_Size hinzugefügten Bytes dienen der Nachverfolgung jeder einzelnen Variablenspalte. Bei dieser Formel wird angenommen, dass alle Spalten variabler Länge zu 100 Prozent gefüllt sind.The bytes added to Max_Var_Key_Size are for tracking each variable column.This formula assumes that all variable-length columns are 100 percent full. Wenn sich abzeichnet, dass ein niedrigerer Prozentsatz des Speicherplatzes für Spalten variabler Länge verwendet wird, können Sie den Max_Var_Key_Size -Wert mithilfe dieses Prozentsatzes anpassen, um einen genaueren Schätzwert für die Gesamtgröße der Tabelle zu erhalten.If you anticipate that a smaller percentage of the variable-length column storage space will be used, you can adjust the Max_Var_Key_Size value by that percentage to yield a more accurate estimate of the overall table size.

    Wenn keine Spalten variabler Länge vorhanden sind, legen Sie Variable_Key_Size auf 0 fest.If there are no variable-length columns, set Variable_Key_Size to 0.

  6. Berechnen Sie die Länge der Indexzeile:Calculate the index row size:

    Index_Row_Size = Fixed_Key_Size + Variable_Key_Size + Index_Null_Bitmap + 1 (für Zeilenüberschriftenaufwand einer Indexzeile) + 6 (für ID-Zeiger der untergeordneten Seite)Index_Row_Size = Fixed_Key_Size + Variable_Key_Size + Index_Null_Bitmap + 1 (for row header overhead of an index row) + 6 (for the child page ID pointer)

  7. Berechnen Sie die Anzahl der Indexzeilen pro Seite (8096 freie Byte pro Seite):Calculate the number of index rows per page (8096 free bytes per page):

    Index_Rows_Per_Page = 8096 / (Index_Row_Size + 2)Index_Rows_Per_Page = 8096 / (Index_Row_Size + 2)

    Da sich eine Indexzeile nicht auf zwei Seiten erstreckt, muss die Anzahl der Indexzeilen pro Seite auf die nächste ganze Zeile abgerundet werden.Because index rows do not span pages, the number of index rows per page should be rounded down to the nearest whole row. Die Angabe 2 in der Formel bezieht sich auf den Eingang der Zeile in das Slotarray der Seite.The 2 in the formula is for the row's entry in the page's slot array.

Schritt 2:Step 2. Berechnen des Speicherplatzes, der zum Speichern der Indexinformationen in der Blattebene verwendet wirdCalculate the Space Used to Store Index Information in the Leaf Level

Mit den folgenden Schritten können Sie den Umfang des Speicherplatzes schätzen, der zum Speichern der Blattebene des Indexes erforderlich ist.You can use the following steps to estimate the amount of space that is required to store the leaf level of the index. Sie benötigen die in Schritt 1 aufgezeichneten Werte, um diesen Schritt durchführen zu können.You will need the values preserved from Step 1 to complete this step.

  1. Geben Sie die Anzahl der Spalten mit fester und mit variabler Länge auf Blattebene an, und berechnen Sie den Speicherplatz, der für deren Speicherung erforderlich ist:Specify the number of fixed-length and variable-length columns at the leaf level and calculate the space that is required for their storage:

    Hinweis

    Sie können einen nicht gruppierten Index erweitern, indem Nichtschlüsselspalten zusätzlich zu Indexschlüsselspalten eingeschlossen werden.You can extend a nonclustered index by including nonkey columns in addition to the index key columns. Diese zusätzlichen Spalten werden auf der Blattebene des nicht gruppierten Indexes gespeichert.These additional columns are only stored at the leaf level of the nonclustered index. Weitere Informationen finden Sie unter Create Indexes with Included Columns.For more information, see Create Indexes with Included Columns.

    Hinweis

    Sie können varchar-, nvarchar-, varbinary- oder sql_variant -Spalten kombinieren, mit dem Ergebnis, dass die definierte Tabellengesamtbreite größer als 8060 Bytes ist.You can combine varchar, nvarchar, varbinary, or sql_variant columns that cause the total defined table width to exceed 8,060 bytes. Die Länge jeder einzelnen Spalte unterliegt auch weiterhin der Beschränkung von 8.000 Byte für eine varchar-, varbinary- oder sql_variant -Spalte und von 4.000 Byte für nvarchar -Spalten.The length of each one of these columns must still fall within the limit of 8,000 bytes for a varchar, varbinary, or sql_variant column, and 4,000 bytes for nvarchar columns. Die kombinierte Breite kann jedoch den Grenzwert von 8.060 Byte in einer Tabelle überschreiten.However, their combined widths may exceed the 8,060 byte limit in a table. Dies gilt auch für die Zeilen auf Blattebene eines nicht gruppierten Indexes, die eingeschlossene Spalten enthalten.This also applies to nonclustered index leaf rows that have included columns.

    Wenn der nicht gruppierte Index keine eingeschlossenen Spalten besitzt, verwenden Sie die Werte aus Schritt 1 einschließlich aller Änderungen, die ggf. in Schritt 1.3 vorgenommen wurden:If the nonclustered index does not have any included columns, use the values from Step 1, including any modifications determined in Step 1.3:

    Num_Leaf_Cols = Num_Key_ColsNum_Leaf_Cols = Num_Key_Cols

    Fixed_Leaf_Size = Fixed_Key_SizeFixed_Leaf_Size = Fixed_Key_Size

    Num_Variable_Leaf_Cols = Num_Variable_Key_ColsNum_Variable_Leaf_Cols = Num_Variable_Key_Cols

    Max_Var_Leaf_Size = Max_Var_Key_SizeMax_Var_Leaf_Size = Max_Var_Key_Size

    Wenn der nicht gruppierte Index keine eingeschlossenen Spalten besitzt, fügen Sie die entsprechenden Werte den Werten aus Schritt 1 einschließlich allen Änderungen, die ggf. in Schritt 1.3 vorgenommen wurden, hinzu.If the nonclustered index does have included columns, add the appropriate values to the values from Step 1, including any modifications in Step 1.3. Die Größe einer Spalte hängt von der Angabe für Datentyp und -länge ab.The size of a column depends on the data type and length specification. Weitere Informationen finden Sie unter Datentypen (Transact-SQL).For more information, see Data Types (Transact-SQL).

    Num_Leaf_Cols = Num_Key_Cols + Anzahl der enthaltenen SpaltenNum_Leaf_Cols = Num_Key_Cols + number of included columns

    Fixed_Leaf_Size = Fixed_Key_Size + Gesamtzahl der Bytes der enthaltenen Schlüsselspalten fester LängeFixed_Leaf_Size = Fixed_Key_Size + total byte size of fixed-length included columns

    Num_Variable_Leaf_Cols = Num_Variable_Key_Cols + Anzahl der enthaltenen Spalten variabler LängeNum_Variable_Leaf_Cols = Num_Variable_Key_Cols + number of variable-length included columns

    Max_Var_Leaf_Size = Max_Var_Key_Size + Maximale Bytegröße der enthaltenen Spalten variabler LängeMax_Var_Leaf_Size = Max_Var_Key_Size + maximum byte size of variable-length included columns

  2. Konto für den Datenzeilenlokator:Account for the data row locator:

    Wenn der nicht gruppierte Index nicht eindeutig ist, wurde der Aufwand für den Datenzeilenlokator bereits in Schritt 1.3 berücksichtigt. In diesem Fall sind keine zusätzlichen Änderungen erforderlich.If the nonclustered index is nonunique, the overhead for the data row locator has already been considered in Step 1.3 and no additional modifications are required. Fahren Sie mit dem nächsten Schritt fort.Go to the next step.

    Wenn der nicht gruppierte Index eindeutig ist, muss der Datenzeilenlokator in allen Zeilen auf der Blattebene berücksichtigt werden.If the nonclustered index is unique, the data row locator must be accounted for in all rows at the leaf level.

    Wenn sich der nicht gruppierte Index über einem Heap befindet, ist der Datenzeilenlokator die Heap-RID (Größe 8 Byte).If the nonclustered index is over a heap, the data row locator is the heap RID (size 8 bytes).

    Num_Leaf_Cols = Num_Leaf_Cols + 1Num_Leaf_Cols = Num_Leaf_Cols + 1

    Num_Variable_Leaf_Cols = Num_Variable_Leaf_Cols + 1Num_Variable_Leaf_Cols = Num_Variable_Leaf_Cols + 1

    Max_Var_Leaf_Size = Max_Var_Leaf_Size + 8Max_Var_Leaf_Size = Max_Var_Leaf_Size + 8

    Wenn sich der nicht gruppierte Index über einem gruppierten Index befindet, dann ist der Datenzeilenlokator der Gruppierungsschlüssel.If the nonclustered index is over a clustered index, the data row locator is the clustering key. Bei den Spalten, die mit dem nicht gruppierten Index kombiniert werden müssen, handelt es sich um die im Gruppierungsschlüssel enthaltenen Spalten, die noch nicht in der Menge der nicht gruppierten Indexschlüsselspalten vorhanden sind.The columns that must be combined with the nonclustered index key are those columns in the clustering key that are not already present in the set of nonclustered index key columns.

    Num_Leaf_Cols = Num_Leaf_Cols + Anzahl der Gruppierungsschlüsselspalten, die nicht in der Menge der nicht gruppierten Indexschlüsselspalten vorhanden sind (+ 1, wenn der gruppierte Index nicht eindeutig ist)Num_Leaf_Cols = Num_Leaf_Cols + number of clustering key columns not in the set of nonclustered index key columns (+ 1 if the clustered index is nonunique)

    Fixed_Leaf_Size = Fixed_Leaf_Size + Anzahl der Bytes in allen Gruppierungsschlüsselspalten fester Länge, die nicht in der Menge der nicht gruppierten Indexschlüsselspalten vorhanden sindFixed_Leaf_Size = Fixed_Leaf_Size + number of fixed-length clustering key columns not in the set of nonclustered index key columns

    Num_Variable_Leaf_Cols = Num_Variable_Leaf_Cols + Anzahl der Gruppierungsschlüsselspalten variabler Länge, die nicht in der Menge der nicht gruppierten Indexschlüsselspalten vorhanden sind (+ 1, wenn der gruppierte Index nicht eindeutig ist)Num_Variable_Leaf_Cols = Num_Variable_Leaf_Cols + number of variable-length clustering key columns not in the set of nonclustered index key columns (+ 1 if the clustered index is nonunique)

    Max_Var_Leaf_Size = Max_Var_Leaf_Size + Anzahl der Bytes in den Gruppierungsschlüsselspalten variabler Länge, die nicht in der Menge der nicht gruppierten Indexschlüsselspalten vorhanden sind (+ 4, wenn der gruppierte Index nicht eindeutig ist)Max_Var_Leaf_Size = Max_Var_Leaf_Size + size in bytes of the variable-length clustering key columns not in the set of nonclustered index key columns (+ 4 if the clustered index is nonunique)

  3. Berechnen der Größe des NULL-Bitmusters:Calculate the null bitmap size:

    Leaf_Null_Bitmap = 2 + ((Num_Leaf_Cols + 7) / 8)Leaf_Null_Bitmap = 2 + ((Num_Leaf_Cols + 7) / 8)

    Nur der ganzzahlige Teil des vorherigen Ausdrucks darf verwendet werden.Only the integer part of the previous expression should be used. Der Rest wird verworfen.Discard any remainder.

  4. Berechnen Sie die Größe der Daten variabler Länge:Calculate the variable length data size:

    Wenn der Indexschlüssel Spalten variabler Länge enthält (einschließlich erforderlicher Gruppierungsschlüsselspalten wie zuvor in Schritt 2.2 beschrieben), müssen Sie ermitteln, wie viel Speicherplatz zum Speichern der Spalten innerhalb der Indexzeile verwendet wird:If there are variable-length columns in the index key, including any necessary clustering key columns as described previously in Step 2.2, determine how much space is used to store the columns within the index row:

    Variable_Leaf_Size = 2 + (Num_Variable_Leaf_Cols x 2) + Max_Var_Leaf_SizeVariable_Leaf_Size = 2 + (Num_Variable_Leaf_Cols x 2) + Max_Var_Leaf_Size

    Die zu Max_Var_Key_Size hinzugefügten Bytes dienen der Nachverfolgung jeder einzelnen Variablenspalte. Bei dieser Formel wird angenommen, dass alle Spalten variabler Länge zu 100 Prozent gefüllt sind.The bytes added to Max_Var_Key_Size are for tracking each variable column.This formula assumes that all variable-length columns are 100 percent full. Wenn sich abzeichnet, dass ein niedrigerer Prozentsatz des Speicherplatzes für Spalten variabler Länge verwendet wird, können Sie den Max_Var_Leaf_Size -Wert mithilfe dieses Prozentsatzes anpassen, um einen genaueren Schätzwert für die Gesamtgröße der Tabelle zu erhalten.If you anticipate that a smaller percentage of the variable-length column storage space will be used, you can adjust the Max_Var_Leaf_Size value by that percentage to yield a more accurate estimate of the overall table size.

    Wenn keine Spalten variabler Länge vorhanden sind, legen Sie Variable_Leaf_Size auf 0 fest.If there are no variable-length columns, set Variable_Leaf_Size to 0.

  5. Berechnen Sie die Länge der Indexzeile:Calculate the index row size:

    Leaf_Row_Size = Fixed_Leaf_Size + Variable_Leaf_Size + Leaf_Null_Bitmap + 1 (für Zeilenüberschriftenaufwand einer Indexzeile)Leaf_Row_Size = Fixed_Leaf_Size + Variable_Leaf_Size + Leaf_Null_Bitmap + 1 (for row header overhead of an index row)

  6. Berechnen Sie die Anzahl der Indexzeilen pro Seite (8096 freie Byte pro Seite):Calculate the number of index rows per page (8096 free bytes per page):

    Leaf_Rows_Per_Page = 8096 / (Leaf_Row_Size + 2)Leaf_Rows_Per_Page = 8096 / (Leaf_Row_Size + 2)

    Da sich eine Indexzeile nicht auf zwei Seiten erstreckt, muss die Anzahl der Indexzeilen pro Seite auf die nächste ganze Zeile abgerundet werden.Because index rows do not span pages, the number of index rows per page should be rounded down to the nearest whole row. Die Angabe 2 in der Formel bezieht sich auf den Eingang der Zeile in das Slotarray der Seite.The 2 in the formula is for the row's entry in the page's slot array.

  7. Berechnen Sie die Anzahl der reservierten freien Zeilen pro Seite anhand des angegebenen Füllfaktors :Calculate the number of reserved free rows per page, based on the fill factor specified:

    Free_Rows_Per_Page = 8096 x ((100 - Fill_Factor) / 100) / (Leaf_Row_Size + 2)Free_Rows_Per_Page = 8096 x ((100 - Fill_Factor) / 100) / (Leaf_Row_Size + 2)

    Bei dem in der Berechnung verwendeten Füllfaktor handelt es sich nicht um einen Prozentwert, sondern um einen ganzzahligen Wert.The fill factor used in the calculation is an integer value instead of a percentage. Da sich eine Zeile nicht auf zwei Seiten erstreckt, muss die Anzahl der Zeilen pro Seite auf die nächste ganze Zeile abgerundet werden.Because rows do not span pages, the number of rows per page should be rounded down to the nearest whole row. Mit ansteigendem Füllfaktor werden mehr Daten auf jeder Seite gespeichert, und die Anzahl der Seiten nimmt ab.As the fill factor grows, more data will be stored on each page and there will be fewer pages. Die Angabe 2 in der Formel bezieht sich auf den Eingang der Zeile in das Slotarray der Seite.The 2 in the formula is for the row's entry in the page's slot array.

  8. Berechnen Sie die Anzahl der Seiten, die zum Speichern aller Zeilen benötigt werden:Calculate the number of pages required to store all the rows:

    Num_Leaf_Pages = Num_Rows / (Leaf_Rows_Per_Page - Free_Rows_Per_Page)Num_Leaf_Pages = Num_Rows / (Leaf_Rows_Per_Page - Free_Rows_Per_Page)

    Die geschätzte Seitenanzahl muss auf die nächste ganze Seite aufgerundet werden.The number of pages estimated should be rounded up to the nearest whole page.

  9. Berechnen Sie die Größe des Indexes (insgesamt 8.192 Byte pro Seite):Calculate the size of the index (8192 total bytes per page):

    Leaf_Space_Used = 8192 x Num_Leaf_PagesLeaf_Space_Used = 8192 x Num_Leaf_Pages

Schritt 3:Step 3. Berechnen des Speicherplatzes, der zum Speichern der Indexinformationen in den inneren Knotenebenen verwendet wirdCalculate the Space Used to Store Index Information in the Non-leaf Levels

Befolgen Sie diese Schritte, um abzuschätzen, wie viel Speicherplatz zum Speichern der Zwischen- und Stammebenen des Indexes erforderlich ist.Follow these steps to estimate the amount of space that is required to store the intermediate and root levels of the index. Sie benötigen die in Schritt 2 und 3 errechneten Werte, um diesen Schritt durchführen zu können.You will need the values preserved from steps 2 and 3 to complete this step.

  1. Berechnen Sie die Anzahl der inneren Knotenebenen im Index:Calculate the number of non-leaf levels in the index:

    Non-leaf Levels = 1 + log( Index_Rows_Per_Page) (Num_Leaf_Pages / Index_Rows_Per_Page)Non-leaf Levels = 1 + log( Index_Rows_Per_Page) (Num_Leaf_Pages / Index_Rows_Per_Page)

    Runden Sie diese Zahl auf die nächste ganze Zahl auf.Round this value up to the nearest whole number. Dieser Wert schließt die Blattebene des nicht gruppierten Index nicht mit ein.This value does not include the leaf level of the nonclustered index.

  2. Berechnen Sie die Anzahl der inneren Knotenseiten im Index:Calculate the number of non-leaf pages in the index:

    Num_Index_Pages = ∑Level (Num_Leaf_Pages/Index_Rows_Per_Page^Level)where 1 <= Level <= LevelsNum_Index_Pages = ∑Level (Num_Leaf_Pages/Index_Rows_Per_Page^Level)where 1 <= Level <= Levels

    Runden Sie jeden Summanden auf die nächste ganze Zahl auf.Round each summand up to the nearest whole number. Stellen Sie sich als einfaches Beispiel einen Index vor, bei dem Num_Leaf_Pages = 1000 und Index_Rows_Per_Page = 25. gilt.As a simple example, consider an index where Num_Leaf_Pages = 1000 and Index_Rows_Per_Page = 25. Die erste Indexebene über der Blattebene speichert 1.000 Indexzeilen, dies bedeutet eine Indexzeile pro Blattseite. Dabei passen 25 Indexzeilen auf eine Seite.The first index level above the leaf level stores 1000 index rows, which is one index row per leaf page, and 25 index rows can fit per page. Dies bedeutet, dass 40 Seiten zum Speichern dieser 1.000 Indexzeilen erforderlich sind.This means that 40 pages are required to store those 1000 index rows. Die nächste Ebene des Indexes muss 40 Zeilen speichern.The next level of the index has to store 40 rows. Dies bedeutet, dass zwei Seiten erforderlich sind.This means that it requires 2 pages. Die letzte Ebene des Indexes muss zwei Zeilen speichern.The final level of the index has to store 2 rows. Dies bedeutet, dass eine Seite erforderlich ist.This means that it requires 1 page. Daraus ergeben sich 43 innere Knotenseiten im Index.This yields 43 non-leaf index pages. Wenn Sie diese Werte in den oben genannten Formeln verwenden, erhalten Sie folgendes Ergebnis:When these numbers are used in the previous formulas, the result is as follows:

    Non-leaf_Levels = 1 + log(25) (1000 / 25) = 3Non-leaf_Levels = 1 + log(25) (1000 / 25) = 3

    Num_Index_Pages = 1000/(25^3)+ 1000/(25^2) + 1000/(25^1) = 1 + 2 + 40 = 43, was der Anzahl der Seiten im Beispiel entspricht.Num_Index_Pages = 1000/(25^3)+ 1000/(25^2) + 1000/(25^1) = 1 + 2 + 40 = 43, which is the number of pages described in the example.

  3. Berechnen Sie die Größe des Indexes (insgesamt 8.192 Byte pro Seite):Calculate the size of the index (8192 total bytes per page):

    Index_Space_Used = 8192 x Num_Index_PagesIndex_Space_Used = 8192 x Num_Index_Pages

Schritt 4.Step 4. Addieren der berechneten WerteTotal the Calculated Values

Addieren Sie die Werte, die in den beiden vorherigen Schritten erzielt wurden:Total the values obtained from the previous two steps:

Größe des nicht gruppierten Indexes (in Bytes) = Leaf_Space_Used + Index_Space_usedNonclustered index size (bytes) = Leaf_Space_Used + Index_Space_used

In dieser Berechnung wird Folgendes nicht berücksichtigt:This calculation does not consider the following:

  • PartitionierungPartitioning

    Der Speicherplatzaufwand aus der Partitionierung ist geringfügig, seine Berechnung jedoch komplex.The space overhead from partitioning is minimal, but complex to calculate. Er muss nicht berücksichtigt werden.It is not important to include.

  • ZuordnungsseitenAllocation pages

    Mindestens eine IAM-Seite wird zum Nachverfolgen der für einen Heap zugeordneten Seiten verwendet, der Speicherplatzaufwand ist jedoch nur minimal. Außerdem ist kein Algorithmus verfügbar, um deterministisch genau zu berechnen, wie viele IAM-Seiten verwendet werden.There is at least one IAM page used to track the pages allocated to a heap, but the space overhead is minimal and there is no algorithm to deterministically calculate exactly how many IAM pages will be used.

  • LOB-Werte (Large Object)Large object (LOB) values

    Der Algorithmus zum Berechnen des genauen Speicherplatzes, der zum Speichern der Werte der LOB-Datentypen varchar(max) , varbinary(max) , nvarchar(max) , text, ntext, xmlund image erforderlich ist, ist komplex.The algorithm to determine exactly how much space will be used to store the LOB data types varchar(max), varbinary(max), nvarchar(max), text, ntext, xml, and image values is complex. Es ist ausreichend, einfach die durchschnittliche Größe der erwarteten LOB-Werte zu addieren, diese mit Num_Rowszu multiplizieren und das Ergebnis dann zur Gesamtgröße des nicht gruppierten Indexes zu addieren.It is sufficient to just add the average size of the LOB values expected, multiply by Num_Rows, and add that to the total nonclustered index size.

  • KomprimierungCompression

    Sie können die Größe eines komprimierten Index nicht im Vorfeld berechnen.You cannot pre-calculate the size of a compressed index.

  • Spalten mit geringer DichteSparse columns

    Informationen zu den Speicherplatzanforderungen von Sparsespalten finden Sie unter Use Sparse Columns.For information about the space requirements of sparse columns, see Use Sparse Columns.

Weitere InformationenSee Also

Beschreibung von gruppierten und nicht gruppierten Indizes Clustered and Nonclustered Indexes Described
Erstellen nicht gruppierter Indizes Create Nonclustered Indexes
Erstellen gruppierter Indizes Create Clustered Indexes
Schätzen der Größe einer Tabelle Estimate the Size of a Table
Schätzen der Größe eines gruppierten Indexes Estimate the Size of a Clustered Index
Schätzen der Größe eines Heaps Estimate the Size of a Heap
Schätzen der Größe einer DatenbankEstimate the Size of a Database