Гость
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Строить индекс или нет / 11 сообщений из 11, страница 1 из 1
09.06.2021, 14:49
    #40076637
Alexander_KM
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Строить индекс или нет
Добрый день, коллеги.
Возник теоретический вопрос:
В таблице есть поле INT
Таблица операционная, по ней выборки.
Начиная с какого числа строк надо строить блок статистики?
Начиная с какого количества строк надо строить индекс?

Коллеги, есть какие наработки, опыт в подобной ситуации?
Или где почитать?

Заранее большое спасибо, буду ждать ответов, комментариев.

С уважением.
...
Рейтинг: 0 / 0
09.06.2021, 15:02
    #40076640
aleks222
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Строить индекс или нет
Alexander_KM

В таблице есть поле INT

О поле, поле, кто тебя усеял отсутствующими мозгами?

Индекс можно и нужно строить с 0 (нуля) строк.
Ибо он не мешает на малом количестве строк, а когда станет "многа строк" - будет помогать.

Единственное исключение - ежели вы никогда не собираетесь что-либо выбирать из своей таблицы.
Но зачем тогда таблица?
...
Рейтинг: 0 / 0
09.06.2021, 15:10
    #40076645
Alexander_KM
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Строить индекс или нет
хаму aleks222
- построение индекса занимает какое-то время
- если есть индекс, поиск идет через него
- страница весит 8Кб (MSSQL читает страницами), и если таблица менее этого размера, при наличии индекса операция получается более затратная
- читай BOL и не позорься

Коллеги, у кого есть нормальные соображения по вопросу?
...
Рейтинг: 0 / 0
09.06.2021, 15:57
    #40076660
Alexander_KM
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Строить индекс или нет
Ладно, если никто подобного не делал, сегодня так или иначе сделаю бенч-тест, результаты выложу...
Как всегда на свой вопрос сам и напишу ответ.
Ждите к вечеру...
...
Рейтинг: 0 / 0
09.06.2021, 18:49
    #40076732
felix_ff
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Строить индекс или нет
Alexander_KM,

Тут достаточно много может быть вводных: какой индекс? какая нагрузка преобладает? какой конечной цели вы хотите добиться?

Уже не помню точно у кого когда то читал то ли Бен Ган толи Рендал рекомендовал почти всегда иметь на таблицах кластерный индекс, но это обуславливалось сравнением куч и кластерного индекса.

Лично для себя я выработал позицию что индекс нужно строить исходя из факта выгоды его использования, если более точно - специфики запросов оперирующих к таблице.

нет никакого профита что на табличке
Код: sql
1.
create table t ([id] int, [key] int, [val] varchar(255), index ix (key)) 

вы построите такой индекс а запросы идут
Код: sql
1.
select val from t where id = @something


в надежде на то что когда то вам понадобится быстрая выборка по колонке key

поэтому вопрос топика уж очень абстрактный

Alexander_KM,
если коротко, ответ на ваш вопрос должен выглядеть так:
видите явно узкие места в запросах/планах стройте индекс, не видите пусть работает.

Если Вы вдруг проектируете сферического коня в вакууме какую то систему в потенциалом что в будущем объемы данных вырастут и вам понадобятся индексы на таблицах, продумайте просто заранее в каких местах будет выигрыш от их использования в зависимости от конкретных запросов.
Понятное дело что не возможно заранее продумать все возможные варианты, но проблемы можно будет решать по мере их поступления.
...
Рейтинг: 0 / 0
09.06.2021, 19:02
    #40076736
Alexander_KM
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Строить индекс или нет
Согласен, наконец-то умный человек, спасибо за уточнения.
почти дописал сет.
результат выложу сегодня, !!! НО есть хам ...
потому не буду выкладывать код, только результат ...
felix_ffб пишите в почту, передам сет

P.S.
- индекс не кластерный (не кластеризированный)
- таблица - куча
...
Рейтинг: 0 / 0
09.06.2021, 19:18
    #40076743
Владислав Колосов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Строить индекс или нет
Alexander_KM,

практика - критерий истины. Нельзя дать точный ответ на неточный вопрос. Задайте точный вопрос.
...
Рейтинг: 0 / 0
09.06.2021, 19:32
    #40076747
felix_ff
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Строить индекс или нет
Alexander_KM,

что бы не быть голословным вот неплохая статья на тему сравнения куч и кластерных индексов
https://www.sqlshack.com/clustered-index-vs-heap/

а вот размышления Рендала по поводу наличия индексов на таблицах
https://www.sqlskills.com/blogs/paul/over-and-under-indexing-how-bad-is-it-out-there/


зараза не помню в какой статье читал про рекомендацию про кластерные индексы, вроде точно у Пола , он ее в платную подписку чтоли утащил?
...
Рейтинг: 0 / 0
09.06.2021, 19:37
    #40076748
Alexander_KM
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Строить индекс или нет
Согласен (Владислав Колосов, felix_ff), но есть серверная платформа записи в рамках INT, на ней и были тесты:
- одна страница ~ 622- 625 записи ничего не надо, пусть будет пустая
- две страницы ~ 1244 записи стата рулит
- три страницы ~ > 1866 записей индекс рулит

P.S.
Напоминаю, индекс не кластерный, таблица - куча
Цифры 622, 1244, 1866 - зависят от внутренней й и внешней фрагментации, на 1 - 3 розниться могут

Пользуйтесь.
...
Рейтинг: 0 / 0
09.06.2021, 19:43
    #40076749
Кесарь
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Строить индекс или нет
Alexander_KM,

при каких запросах? Простой join такой таблицы с бОльшей приведёт к чему? Правильно, исследуемая таблица будет просканирована столько раз, сколько строк будет отобрано из бОльшей. Отличное решение, ага.

Вы что вообще исследуете? Какая задача или проблема стоит?
...
Рейтинг: 0 / 0
10.06.2021, 08:55
    #40076781
aleks222
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Строить индекс или нет
Кесарь
Alexander_KM,

при каких запросах? Простой join такой таблицы с бОльшей приведёт к чему? Правильно, исследуемая таблица будет просканирована столько раз, сколько строк будет отобрано из бОльшей. Отличное решение, ага.

Вы что вообще исследуете? Какая задача или проблема стоит?


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


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