Индексы в SQL Server - это специальные структуры данных, которые ускоряют выполнение запросов за счет быстрого поиска данных без необходимости полного сканирования таблицы.
Кластерный индекс (Clustered Index):
Некластерный индекс (Nonclustered Index):
Уникальный индекс (Unique Index):
Составной индекс (Composite Index):
Индекс с включенными столбцами (Covering Index):
CREATE INDEX IX_IndexName ON TableName (Column1, Column2, ...);
CREATE CLUSTERED INDEX IXC_TableName_Column ON TableName (ColumnName);
CREATE UNIQUE INDEX IXU_TableName_Column ON TableName (ColumnName);
CREATE INDEX IX_TableName_Column ON TableName (ColumnName)
INCLUDE (Column2, Column3);
CREATE INDEX IX_Filtered ON TableName (ColumnName)
WHERE ColumnName IS NOT NULL;
CREATE INDEX IX_Employees_LastName ON Employees (LastName);
CREATE INDEX IX_Employees_NameDepartment ON Employees (LastName, DepartmentID);
CREATE UNIQUE INDEX IXU_Employees_Email ON Employees (Email)
INCLUDE (FirstName, LastName);
CREATE INDEX IX_Employees_LastName ON Employees (LastName)
WITH (FILLFACTOR = 80);
CREATE INDEX IX_Employees_LastName ON Employees (LastName)
WITH (ONLINE = ON);
CREATE INDEX IX_Active_Employees ON Employees (DepartmentID)
WHERE IsActive = 1;
SELECT * FROM sys.indexes WHERE object_id = OBJECT_ID('Employees');
ALTER INDEX IX_Employees_LastName ON Employees REBUILD;
ALTER INDEX IX_Employees_LastName ON Employees REORGANIZE;
DROP INDEX IX_Employees_LastName ON Employees;
SELECT * FROM sys.dm_db_index_usage_stats;
Резюмируем: создание индексов в SQL Server выполняется командой CREATE INDEX с различными параметрами. Правильно спроектированные индексы значительно ускоряют выполнение запросов, но требуют баланса между производительностью чтения и затратами на обслуживание. Для оптимальной производительности важно выбирать правильные типы индексов, учитывать составные индексы и регулярно обслуживать существующие индексы.