|
Строить индекс или нет
|
|||
---|---|---|---|
#18+
Добрый день, коллеги. Возник теоретический вопрос: В таблице есть поле INT Таблица операционная, по ней выборки. Начиная с какого числа строк надо строить блок статистики? Начиная с какого количества строк надо строить индекс? Коллеги, есть какие наработки, опыт в подобной ситуации? Или где почитать? Заранее большое спасибо, буду ждать ответов, комментариев. С уважением. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.06.2021, 14:49 |
|
Строить индекс или нет
|
|||
---|---|---|---|
#18+
Alexander_KM В таблице есть поле INT О поле, поле, кто тебя усеял отсутствующими мозгами? Индекс можно и нужно строить с 0 (нуля) строк. Ибо он не мешает на малом количестве строк, а когда станет "многа строк" - будет помогать. Единственное исключение - ежели вы никогда не собираетесь что-либо выбирать из своей таблицы. Но зачем тогда таблица? ... |
|||
:
Нравится:
Не нравится:
|
|||
09.06.2021, 15:02 |
|
Строить индекс или нет
|
|||
---|---|---|---|
#18+
хаму aleks222 - построение индекса занимает какое-то время - если есть индекс, поиск идет через него - страница весит 8Кб (MSSQL читает страницами), и если таблица менее этого размера, при наличии индекса операция получается более затратная - читай BOL и не позорься Коллеги, у кого есть нормальные соображения по вопросу? ... |
|||
:
Нравится:
Не нравится:
|
|||
09.06.2021, 15:10 |
|
Строить индекс или нет
|
|||
---|---|---|---|
#18+
Ладно, если никто подобного не делал, сегодня так или иначе сделаю бенч-тест, результаты выложу... Как всегда на свой вопрос сам и напишу ответ. Ждите к вечеру... ... |
|||
:
Нравится:
Не нравится:
|
|||
09.06.2021, 15:57 |
|
Строить индекс или нет
|
|||
---|---|---|---|
#18+
Alexander_KM, Тут достаточно много может быть вводных: какой индекс? какая нагрузка преобладает? какой конечной цели вы хотите добиться? Уже не помню точно у кого когда то читал то ли Бен Ган толи Рендал рекомендовал почти всегда иметь на таблицах кластерный индекс, но это обуславливалось сравнением куч и кластерного индекса. Лично для себя я выработал позицию что индекс нужно строить исходя из факта выгоды его использования, если более точно - специфики запросов оперирующих к таблице. нет никакого профита что на табличке Код: sql 1.
вы построите такой индекс а запросы идут Код: sql 1.
в надежде на то что когда то вам понадобится быстрая выборка по колонке key поэтому вопрос топика уж очень абстрактный Alexander_KM, если коротко, ответ на ваш вопрос должен выглядеть так: видите явно узкие места в запросах/планах стройте индекс, не видите пусть работает. Если Вы вдруг проектируете сферического коня в вакууме какую то систему в потенциалом что в будущем объемы данных вырастут и вам понадобятся индексы на таблицах, продумайте просто заранее в каких местах будет выигрыш от их использования в зависимости от конкретных запросов. Понятное дело что не возможно заранее продумать все возможные варианты, но проблемы можно будет решать по мере их поступления. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.06.2021, 18:49 |
|
Строить индекс или нет
|
|||
---|---|---|---|
#18+
Согласен, наконец-то умный человек, спасибо за уточнения. почти дописал сет. результат выложу сегодня, !!! НО есть хам ... потому не буду выкладывать код, только результат ... felix_ffб пишите в почту, передам сет P.S. - индекс не кластерный (не кластеризированный) - таблица - куча ... |
|||
:
Нравится:
Не нравится:
|
|||
09.06.2021, 19:02 |
|
Строить индекс или нет
|
|||
---|---|---|---|
#18+
Alexander_KM, практика - критерий истины. Нельзя дать точный ответ на неточный вопрос. Задайте точный вопрос. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.06.2021, 19:18 |
|
Строить индекс или нет
|
|||
---|---|---|---|
#18+
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/ зараза не помню в какой статье читал про рекомендацию про кластерные индексы, вроде точно у Пола , он ее в платную подписку чтоли утащил? ... |
|||
:
Нравится:
Не нравится:
|
|||
09.06.2021, 19:32 |
|
Строить индекс или нет
|
|||
---|---|---|---|
#18+
Согласен (Владислав Колосов, felix_ff), но есть серверная платформа записи в рамках INT, на ней и были тесты: - одна страница ~ 622- 625 записи ничего не надо, пусть будет пустая - две страницы ~ 1244 записи стата рулит - три страницы ~ > 1866 записей индекс рулит P.S. Напоминаю, индекс не кластерный, таблица - куча Цифры 622, 1244, 1866 - зависят от внутренней й и внешней фрагментации, на 1 - 3 розниться могут Пользуйтесь. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.06.2021, 19:37 |
|
Строить индекс или нет
|
|||
---|---|---|---|
#18+
Alexander_KM, при каких запросах? Простой join такой таблицы с бОльшей приведёт к чему? Правильно, исследуемая таблица будет просканирована столько раз, сколько строк будет отобрано из бОльшей. Отличное решение, ага. Вы что вообще исследуете? Какая задача или проблема стоит? ... |
|||
:
Нравится:
Не нравится:
|
|||
09.06.2021, 19:43 |
|
Строить индекс или нет
|
|||
---|---|---|---|
#18+
Кесарь Alexander_KM, при каких запросах? Простой join такой таблицы с бОльшей приведёт к чему? Правильно, исследуемая таблица будет просканирована столько раз, сколько строк будет отобрано из бОльшей. Отличное решение, ага. Вы что вообще исследуете? Какая задача или проблема стоит? Стоит "стандартная задач кота, которому делать нечего". ... |
|||
:
Нравится:
Не нравится:
|
|||
10.06.2021, 08:55 |
|
|
start [/forum/topic.php?fid=46&fpage=22&tid=1684617]: |
0ms |
get settings: |
7ms |
get forum list: |
10ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
57ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
52ms |
get tp. blocked users: |
2ms |
others: | 9ms |
total: | 154ms |
0 / 0 |