О пользе CHECK-ограничений в MSSQL: как план запроса ускорился почти в 6 раз — 1 октября 2026 г. в 18:35:30.632
О пользе CHECK-ограничений в MSSQL: как план запроса ускорился почти в 6 раз Статья показывает, как CHECK-ограничения в MSSQL помогают оптимизатору запросов строить более эффективные планы выполнения. Реальный пример: после добавления ограничения, определяющего допустимые значения колонки State (0-10), число прочитанных строк упало почти в 6 раз — с 659796 до 114496, а логические чтения снизились с 11268 до 2301.Ключевая идея: сервер преобразует условие «NOT IN (0, 6, 8)» в эквивалентное «IN (1, 2, 3, 4, 5, 7, 9, 10)» и вместо сканирования широких диапазонов индекса выполняет серию точечных переходов, а при противоречии в условиях WHERE может вовсе исключить обращение к данным. Для приложений на Entity Framework автор рекомендует библиотеку EFCore.CheckConstraints для автогенерации ограничений на основе enum-типов. https://habr.com/ru/companies/skbkontur/articles/1082258/