мощность переключает SQL Server на сканирование индекса (вместо поиска)

Предполагая, что таблица содержит достаточно информации, чтобы гарантировать поиск по индексу, при какой мощности SQL Server (или PostgreSQL) выберет сканирование индекса?

Причина, по которой я спросите это, я ранее публиковал вопрос ( ссылка ), в котором два запроса выполнялись с одинаковой скоростью, но ни один не пытался использовать индекс для обработанных столбцов. После того, как SQL Server предложил, чтобы я поместил покрывающий индекс , который включал запрашиваемые столбцы (он предлагал это для обоих запросов), я начал искать причины того, почему это может сделать такой странный предложение.

Я экспериментировал с индексами, покрывающими и составными, но оба выполнялись в одно и то же время (мы ' мы говорим о 3 миллионах строк)

В конце концов я пришел к выводу, что это произошло из-за сверхвысокой мощности данных. Каждая строка уникальна. Я предполагаю, что это заставило SQL-сервер выбрать сканирование индекса. Однако в запросе указано «ГДЕ Col1>? AND Col2 », Так что это немного сбивает с толку.

Мои вопросы:

  1. При какой мощности РСУБД всегда будет выбирать сканирование индекса?
  2. Может ли Кто-нибудь объяснит, почему SQL Server не использует индекс, если оператор WHERE указывает, что это имеет смысл?

Я приложил план выполнения. alt text

6
задан Community 23 May 2017 в 12:24
поделиться