Если предположить, что таблица содержит достаточно информации, чтобы гарантировать поиск по индексу, с какой мощностью SQL Server (или PostgreSQL) выберет сканирование индекса?
Причина, по которой я спрашиваю об этом, заключается в том, что я ранее разместил вопрос (link), в котором два запроса выполнялись с одинаковой скоростью, но ни один из них не пытался использовать индекс для обработанных столбцов. После того, как SQL Server предложил мне поместить покрывающий индекс, который включал запрашиваемые столбцы (он предлагал это для обоих запросов), я начал искать причины, по которым это странное предложение.
Я экспериментировал с индексами, покрывающими и составными, но оба выполнялись одновременно (мы говорим о 3 миллионах строк).
В конце концов я пришел к выводу, что это произошло из-за сверхвысокой мощности данных. Каждая строка уникальна. Я предполагаю, что это заставило SQL-сервер выбрать сканирование индекса. Однако в запросе указано «ГДЕ Col1>? AND Col2‹? », Так что это немного сбивает с толку.
Мои вопросы:
- При какой мощности РСУБД всегда выбирает сканирование индекса?
- Может ли кто-нибудь объяснить, почему SQL Server не использует индекс, если оператор WHERE указывает, что это имеет смысл?
Я приложил план исполнения.