Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Где при создании индекса колонка будет занимать больше места? (INCLUDE или напрямую) / 11 сообщений из 11, страница 1 из 1
26.04.2018, 18:39
    #39636958
ssms
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Где при создании индекса колонка будет занимать больше места? (INCLUDE или напрямую)
Добрый день.


Хочу создать индекс, включающий 4 колонки таблицы.

Типы полей такие:

Код: sql
1.
2.
3.
4.
с1 int
с2 varchar(15)
с3 float
с4 int





Читаю мануалы:

column

Столбец или столбцы, на которых основан индекс



INCLUDE (column [ ,... n ] )

Указывает неключевые столбцы, добавляемые на конечный уровень некластеризованного индекса.Некластеризованный индекс может быть уникальным или неуникальным.



Но мало чего понял из этого...

Интересует с практической точки зрения как предпочтительнее сделать (занимаемое место, производительность и т.д.)

Код: sql
1.
CREATE NONCLUSTERED INDEX [index1] ON table1 (c1,c2,c3,c4)



или

Код: sql
1.
CREATE NONCLUSTERED INDEX [index1] ON table1 (c1) INCLUDE (c2,c3,c4)



?
...
Рейтинг: 0 / 0
26.04.2018, 18:47
    #39636965
Гавриленко Сергей Алексеевич
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Где при создании индекса колонка будет занимать больше места? (INCLUDE или напрямую)
С практической точкой зрения индексы делаются для каких-то запросов или ограничений.
...
Рейтинг: 0 / 0
26.04.2018, 18:49
    #39636969
ssms
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Где при создании индекса колонка будет занимать больше места? (INCLUDE или напрямую)
Гавриленко Сергей АлексеевичС практической точкой зрения индексы делаются для каких-то запросов или ограничений.

Запросы, используют в условиях выборки эти 4 поля.
Есть внешний ключ по полю c4, но отсутствует индекс.

Так же есть кластерный индекс по полю id. (оно отсутствует среди этих четырех полей)
...
Рейтинг: 0 / 0
26.04.2018, 18:51
    #39636971
Гавриленко Сергей Алексеевич
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Где при создании индекса колонка будет занимать больше места? (INCLUDE или напрямую)
ssmsЗапросы, используют в условиях выборки эти 4 поля.
Одновременно?
...
Рейтинг: 0 / 0
26.04.2018, 18:58
    #39636977
ssms
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Где при создании индекса колонка будет занимать больше места? (INCLUDE или напрямую)
Гавриленко Сергей АлексеевичssmsЗапросы, используют в условиях выборки эти 4 поля.
Одновременно?

Разные запросы по 1-2 поля.
...
Рейтинг: 0 / 0
26.04.2018, 19:19
    #39636993
Гавриленко Сергей Алексеевич
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Где при создании индекса колонка будет занимать больше места? (INCLUDE или напрямую)
ssmsГавриленко Сергей Алексеевичпропущено...

Одновременно?

Разные запросы по 1-2 поля.Индекс (c1,c2,c3,c4) может использоваться только если вы используете в запросе комбинации полей c1-c2-c3-c4, c1-c2-c3, c1-c2, c1. И то, "использование" должно быть вполне определенным. Как только у вас выпадает поле из цепочки ключей, все остальные, что правее, сразу выпадают из seek predicate.
...
Рейтинг: 0 / 0
27.04.2018, 09:32
    #39637153
ЛиП
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Где при создании индекса колонка будет занимать больше места? (INCLUDE или напрямую)
Include используется дляя селекта этих полей. При поиски он бесполезен
...
Рейтинг: 0 / 0
27.04.2018, 11:37
    #39637271
ssms
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Где при создании индекса колонка будет занимать больше места? (INCLUDE или напрямую)
ЛиПInclude используется дляя селекта этих полей. При поиски он бесполезен

Я так и думал.
...
Рейтинг: 0 / 0
27.04.2018, 11:38
    #39637272
ssms
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Где при создании индекса колонка будет занимать больше места? (INCLUDE или напрямую)
Гавриленко Сергей Алексеевичssmsпропущено...


Разные запросы по 1-2 поля.Индекс (c1,c2,c3,c4) может использоваться только если вы используете в запросе комбинации полей c1-c2-c3-c4, c1-c2-c3, c1-c2, c1. И то, "использование" должно быть вполне определенным. Как только у вас выпадает поле из цепочки ключей, все остальные, что правее, сразу выпадают из seek predicate.

Получается если индекс (c1,c2,c3,c4), то выборка по c2 уже его не использует. Жалко (
...
Рейтинг: 0 / 0
27.04.2018, 11:51
    #39637292
Yasha123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Где при создании индекса колонка будет занимать больше места? (INCLUDE или напрямую)
ЛиПInclude используется дляя селекта этих полей. При поиски он бесполезен
это не так.
вам привести пример плана,
где выбран просмотр некластерного только потому,
что там есть инклуд, по которому в запросе условие поиска, и прочие поля, необходимые для запроса?
кластерный там не по полю поиска и весит гораздо больше некластерного,
в результате выбирается покрывающий некластерный,
хотя и в нем тоже поле поиска вовсе не ключевое
...
Рейтинг: 0 / 0
27.04.2018, 11:55
    #39637295
Владислав Колосов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Где при создании индекса колонка будет занимать больше места? (INCLUDE или напрямую)
ssms,

использовать может для просмотра, что, в конце концов, быстрее, чем просмотр кучи.
...
Рейтинг: 0 / 0
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Где при создании индекса колонка будет занимать больше места? (INCLUDE или напрямую) / 11 сообщений из 11, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]