Функции индекса, относящиеся к поставщику 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();
}