У меня есть два разных запроса в SQL Server, и я хочу уточнить
- как план выполнения будет другим, и
- какой из них эффективнее
Запросы:
SELECT *
FROM table_name
WHERE column < 2
а также
SELECT column
FROM table_name
WHERE column < 2
У меня есть некластеризованный индекс на column
.
Раньше я использовал Postgresql и не знаком с SQL Server и подобными индексами.
Когда я прочитал много вопросов здесь, я сделал две заметки:
Когда у меня есть некластеризованный индекс, мне нужен еще один шаг, чтобы получить доступ к данным
С помощью некластеризованного индекса я мог бы получить копию части таблицы и получить более быстрое время отклика.
Итак, я запутался.
Еще один вопрос: когда у меня есть «SELECT *», на что влияет некластеризованный индекс?
column
....), и поэтому вам нужно передать намного меньше данных. Кроме того, для запроса № 2 вы можете выполнить запрос (выбрать все необходимые столбцы) непосредственно из некластеризованного индекса, а для запроса № 1 вам нужно будет выполнить поиск ключа для каждой найденной строки. (или, вполне возможно, SQL Server предпочтет игнорировать NCI и просто просканирует таблицу) - person marc_s   schedule 24.02.2018