Ich habe eine Highscore-Tabelle für 100.000 Spieler, die zweimal am Tag mit einem Datensatz pro Spieler eingefügt wird. Am Ende des Tages beträgt die Indexfragmentierung für die Indizes in dieser Tabelle 99%. Gibt es eine Möglichkeit, dies zu verhindern, indem Sie die Einstellungen anpassen?
CREATE TABLE HighScore(
[id] [int] IDENTITY(1,1) NOT NULL,
[user] [int] NULL,
[player] [int] NULL,
[round] [tinyint] NULL,
[group] [int] NULL,
[rank] [int] NULL,
[delta] [int] NULL,
[roundpoints] [int] NULL,
[totalpoints] [int] NULL,
PRIMARY KEY CLUSTERED
(
[id] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, FILLFACTOR = 80) ON [PRIMARY]
) ON [PRIMARY]
CREATE NONCLUSTERED INDEX [HighScore_RoundGroup_Nidx] ON .[HighScore]
(
[round] ASC,
[group] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, IGNORE_DUP_KEY = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, FILLFACTOR = 80) ON [PRIMARY]
GO
FILLFACTOR = 80
. Es wird nur Platz verschwenden. Alle Spalten haben eine feste Länge, sodass eine Zeile beim Aktualisieren nicht erweitert werden kann und keine Einfügungen in der Mitte der Tabelle erfolgen können. 99% scheinen auch für den anderen Index unerwartet hoch zu sein. Wie viele Seiten enthält jeder Index?
sys.dm_db_index_physical_stats
Ausgabe zeigen ?