Поделиться через


Функции индекса, относящиеся к поставщику SQL Server Entity Framework Core

На этой странице описаны параметры конфигурации индекса, относящиеся к поставщику SQL Server.

Кластеризация

Кластеризованные индексы сортируют и хранят строки данных в таблицах или представлениях на основе их ключевых значений. Создание правильного кластеризованного индекса для таблицы может значительно повысить скорость запросов, так как данные уже указаны в оптимальном порядке. Существует только один кластеризованный индекс для каждой таблицы, так как строки данных могут храниться в единственном порядке. Дополнительные сведения см. в документации ПО SQL Server по кластеризованным и некластикционным индексам.

По умолчанию столбец первичного ключа таблицы неявно поддерживается кластеризованным индексом, а все остальные индексы не кластеризованы.

Можно настроить кластеризацию индекса или ключа следующим образом:

protected override void OnModelCreating(ModelBuilder modelBuilder)
{
    modelBuilder.Entity<Blog>().HasIndex(b => b.PublishedOn).IsClustered();
}

Замечание

SQL Server поддерживает только один кластеризованный индекс для каждой таблицы, а первичный ключ по умолчанию кластеризован. Если вы хотите создать кластеризованный индекс для неключевого столбца, необходимо явно сделать ваш ключ некластеризованным.

Коэффициент заполнения

Параметр "Коэффициент заполнения индекса" предоставляется для точной настройки хранилища данных индекса и производительности. Дополнительные сведения см. в документации по SQL Server по коэффициенту заполнения.

Вы можете настроить коэффициент заполнения индекса следующим образом:

protected override void OnModelCreating(ModelBuilder modelBuilder)
{
    modelBuilder.Entity<Blog>().HasIndex(b => b.PublishedOn).HasFillFactor(10);
}

Онлайн создание

Параметр ONLINE разрешает одновременный доступ пользователей к базовой таблице или кластеризованным данным индекса и любым связанным некластеризованным индексам во время создания индекса, чтобы пользователи могли продолжать обновлять и запрашивать базовые данные. При выполнении операций языка определения данных (DDL) в автономном режиме, таких как сборка или перестроение кластеризованного индекса, эти операции держат эксклюзивные блокировки на базовых данных и связанных индексах. Дополнительные сведения см. в документации ПО SQL Server по параметру индекса ONLINE.

Вы можете настроить индекс с параметром ONLINE следующим образом:

protected override void OnModelCreating(ModelBuilder modelBuilder)
{
    modelBuilder.Entity<Blog>().HasIndex(b => b.PublishedOn).IsCreatedOnline();
}