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