snippetsqlModerate
How do I intentionally fragment a SQL Server Index?
Viewed 0 times
howsqlfragmentserverindexintentionally
Problem
I would like to create bad indexes conditions intentionally on a SQL Server 2017 test database I have, just to better understand these maintenance scripts? SQL Server Index and Statistics Maintenance
Is there a fast/automatic way to compromise index integrity or increase index fragmentation? Do you know any useful resource I can look at to achieve this?
Is there a fast/automatic way to compromise index integrity or increase index fragmentation? Do you know any useful resource I can look at to achieve this?
Solution
One quick way I can imagine is creating a table with
This will generate million rows.
Knowing that
UNIQUEIDENTIFIER as a primary key and inserting lots of random values. This could be achieved using this script:CREATE TABLE dbo.Tests (Id UNIQUEIDENTIFIER PRIMARY KEY);
GO
INSERT INTO dbo.Tests (Id)
WITH x AS (SELECT n FROM (VALUES (0),(1),(2),(3),(4),(5),(6),(7),(8),(9)) v(n))
SELECT NEWID()
FROM x AS x1, x AS x2, x AS x3, x AS x4, x AS x5, x AS x6;
This will generate million rows.
Knowing that
NEWID() does not guarantee any ordering, SQL Server will have to insert into random spots in table - that's going to fragment the primary key.Context
StackExchange Database Administrators Q#245693, answer score: 10
Revisions (0)
No revisions yet.