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


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

На этой странице подробно описаны варианты конфигурации индекса, относящиеся к поставщику 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 (DDL), такие как построение или перестроение кластеризованного индекса, выполняются в режиме «вне сети», то они удерживают монопольные блокировки на базовые данные и связанные индексы. Дополнительные сведения см. в документации SQL Server по параметру индекса ONLINE.

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

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