Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Ламер в индексах  [new]
Santa89
Member

Откуда:
Сообщений: 1551
Посмотрел немного обучающего материала, но почему то для себя так и не закрепил, прошу обьяснить.Вобщем, вопрос такой:
В каких случаях при создании индексов нужно париться о том, чтобы поддерживать их структуру (юзать команды drop/create index, пересоздавать табличку заново итд..) ?

К примеру, создаю я таблицу с PrimaryKey, автоматически создался индекс PK_Table_Name (Clustered).

-Нужно ли мне проводить какие-то дополнительные операции по поддержке моего K_Table_Name (Clustered), если каждый день я собираюсь её транкейтить и заливать данные заново?

-Как быть если эту же табличку я транкейтить не собираюсь, а буду просто подгружать только свежие данные?

-С некластерными индексами такая же суть? Или другая стратегия поддержки индекса?
28 ноя 13, 04:22    [15203127]     Ответить | Цитировать Сообщить модератору
 Re: Ламер в индексах  [new]
aleks2
Guest
Santa89
Посмотрел немного обучающего материала, но почему то для себя так и не закрепил, прошу обьяснить.Вобщем, вопрос такой:
В каких случаях при создании индексов нужно париться о том, чтобы поддерживать их структуру (юзать команды drop/create index, пересоздавать табличку заново итд..) ?

К примеру, создаю я таблицу с PrimaryKey, автоматически создался индекс PK_Table_Name (Clustered).

1-Нужно ли мне проводить какие-то дополнительные операции по поддержке моего K_Table_Name (Clustered), если каждый день я собираюсь её транкейтить и заливать данные заново?
2
-Как быть если эту же табличку я транкейтить не собираюсь, а буду просто подгружать только свежие данные?
3
-С некластерными индексами такая же суть? Или другая стратегия поддержки индекса?


1. Нет.
2. Смотря куда (с точки зрения индекса) эти данные попадают. Если в середину, то следует иногда дефрагментировать, перестраивать. Если строго в начало или конец - не надо.
3. Любой индекс - суть таблица из полей индекса с ОДНИМ кластерным индексом.
28 ноя 13, 06:01    [15203158]     Ответить | Цитировать Сообщить модератору
 Re: Ламер в индексах  [new]
Santa89
Member

Откуда:
Сообщений: 1551
2. Эмм...это будет простой инсерт данных, допустим с новым появившимся продуктом..Как узнать куда он в таблице попадёт, в середину или в конец..? Это нужно вручную прописывать в индексе или при вставке?
3. А можно поподробнее про план обслуживания некластерных индексов.
Хотелось бы простые советы, типа если это-то делайте так, если то - делайте эдак...
28 ноя 13, 08:25    [15203288]     Ответить | Цитировать Сообщить модератору
 Re: Ламер в индексах  [new]
aleks2
Guest
Santa89
2..Как узнать куда он в таблице попадёт, в середину или в конец..?
3. А можно поподробнее про план обслуживания некластерных индексов.
Хотелось бы простые советы, типа если это-то делайте так, если то - делайте эдак...


2. Ты неведаешь значений своего же кластерного индекса, т.е. вставляешь с закрытыми глазами? Ооооо!
3. Простой совет: делай так же, как с кластерным.
28 ноя 13, 08:38    [15203308]     Ответить | Цитировать Сообщить модератору
 Re: Ламер в индексах  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 32174
Santa89
2. Эмм...это будет простой инсерт данных, допустим с новым появившимся продуктом..Как узнать куда он в таблице попадёт, в середину или в конец..? Это нужно вручную прописывать в индексе или при вставке?
3. А можно поподробнее про план обслуживания некластерных индексов.
Хотелось бы простые советы, типа если это-то делайте так, если то - делайте эдак...
2. Узнать это можно исходя из смысла данных. "Куда попадёт" - имеется в виду исходя из сортировки значения.
Например, значения для поля "Дата записи" постоянно увеличиваются, а "имя" может вставляться куда угодно.

3. Да всё одинаково - перестроение статистики и перестроение индекса. Как правило, требуется делать первое, с регулярностью, зависящей от изменчивости данных.
28 ноя 13, 08:39    [15203311]     Ответить | Цитировать Сообщить модератору
 Re: Ламер в индексах  [new]
Santa89
Member

Откуда:
Сообщений: 1551
Спасибо за ответы
Вставляются у меня айдишники новых клиентов, то есть логично, что вставляемые айди будут по значению больше чем те, которые уже лежат в таблице.
И если уникальный кластерный индекс я упорядочу по возрастанию (ASC) то новые попадут в конец, правильно понял?
Следовательно, исходя из советов aleks2 мне не нужно париться с обслуживанием индекса при новой вставке..
28 ноя 13, 12:26    [15204943]     Ответить | Цитировать Сообщить модератору
 Re: Ламер в индексах  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 32174
Santa89
И если уникальный кластерный индекс я упорядочу по возрастанию (ASC) то новые попадут в конец, правильно понял?
Следовательно, исходя из советов aleks2 мне не нужно париться с обслуживанием индекса при новой вставке..
Дефраментировать (пересоздавать) точно не надо, а обновлять статистику - может быть.
28 ноя 13, 12:48    [15205209]     Ответить | Цитировать Сообщить модератору
 Re: Ламер в индексах  [new]
Exproment
Member

Откуда:
Сообщений: 418
Santa89, возьмите да поиграйтесь с индексами разными вариантами. С точки зрения обучения, собственный анализ намного полезнее чужого.

Используйте представление для определения уровня фрагментации. Посмотрите насколько сильно она будет тормозить выборки.

Вам всегда надо просто представлять как выглядит ваш индекс и тогда все будет очевидно. Утверждение, что identity кластеризованный индекс не надо никогда фрагментировать, тоже не до конца истинно. Если вы выполняется много удалений записей из таблицы, фрагментация будет расти. Пустые промежутки не будут заполнятся. С другой стороны, если вы удаляете только старые записи(исходя из времени их добавления), то фрагментации не будет. Тут каждый случай уникален и надо видеть общую картину.

Погуглите лекции Дмитрия Короткевича 'все что вы хотели знать об индексах но боялись спросить". Он очень неплохо объясняет основы.
28 ноя 13, 13:23    [15205578]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить