Size: a a a

DBA - русскоговорящее сообщество

2021 March 11

AS

Anatoly Shirokov in DBA - русскоговорящее сообщество
Ваня
То есть в такой ситуации кластерный индекс имеет выигрыш перед некластерным, верно?
в такой ситуации записи локализуются физически по указанному тобой в индексе полю, как бы кластерный индекс разделяет множество твоих данных на физические корзины
источник

В

Ваня in DBA - русскоговорящее сообщество
Anatoly Shirokov
ну давай на примере. есть районы города. твоя система работает с районом, то район отличный кандидат на кластерный индекс, почему? потому что все твои регулярные запросы будут иметь район в качестве одного из фильтрующий полей. это значит, что СУБД будет работать с данными локализованными физически в одном "кластере", районе, а не носится по диску в поисках физических записей, разбросанных как бог на душу положит.
и если рассмотреть ситуацию, что город - Москва и у нас районы добавляются просто постоянно ?
тогда какой из индексов покажет себя лучше?
источник

В

Ваня in DBA - русскоговорящее сообщество
ведь по идее кластерный индекс будет перестраиваться с каждым инсертом (это как я понимаю)
источник

AS

Anatoly Shirokov in DBA - русскоговорящее сообщество
Ваня
ведь по идее кластерный индекс будет перестраиваться с каждым инсертом (это как я понимаю)
кластерный индекс управляет физическим расположением записей.
источник

A

Adv0cat in DBA - русскоговорящее сообщество
а какой индекс не будет перестраиваться с каждым инсертом?))
источник

В

Ваня in DBA - русскоговорящее сообщество
Adv0cat
а какой индекс не будет перестраиваться с каждым инсертом?))
да, перестраивается и тот и тот, разница в том что один хранит указатели - а другой данные хранит физически и поэтому мне немного не понятно - для какого индекса эта операция будет менее затратна ?
источник

AS

Anatoly Shirokov in DBA - русскоговорящее сообщество
есть у тебя 10 районов, на каждый район будет создана своя корзина, и записи будут распределяться по корзинам в зависимости от значения поля район. добавится новый район, СУБД создаст новую корзину и будет помещать записи туда
источник

В

Ваня in DBA - русскоговорящее сообщество
Anatoly Shirokov
есть у тебя 10 районов, на каждый район будет создана своя корзина, и записи будут распределяться по корзинам в зависимости от значения поля район. добавится новый район, СУБД создаст новую корзину и будет помещать записи туда
ааа
источник

В

Ваня in DBA - русскоговорящее сообщество
понятно
источник

В

Ваня in DBA - русскоговорящее сообщество
Anatoly Shirokov
есть у тебя 10 районов, на каждый район будет создана своя корзина, и записи будут распределяться по корзинам в зависимости от значения поля район. добавится новый район, СУБД создаст новую корзину и будет помещать записи туда
но тогда следующий вопрос: не считая того что кластерный индекс можно построить один на таблицу, в каких случаях тогда будет предпочтительнее некластерный индекс ?
источник

AS

Anatoly Shirokov in DBA - русскоговорящее сообщество
Ваня
но тогда следующий вопрос: не считая того что кластерный индекс можно построить один на таблицу, в каких случаях тогда будет предпочтительнее некластерный индекс ?
если ты понял про кластерный индекс, то тогда непонятен твой вопрос про некластерный.
источник

AS

Anatoly Shirokov in DBA - русскоговорящее сообщество
обычный индекс ты строишь для тех полей регулярных запросов, которые участвуют в where, group by
источник

AS

Anatoly Shirokov in DBA - русскоговорящее сообщество
ты выбрал выражение для кластерного, тем самым распределив записи физически
источник

В

Ваня in DBA - русскоговорящее сообщество
Anatoly Shirokov
ты выбрал выражение для кластерного, тем самым распределив записи физически
а, все
вопрос теперь точно отпал
источник

AS

Anatoly Shirokov in DBA - русскоговорящее сообщество
все остальное уже твоя борьба за перфоманс запросов
источник

YS

Yaroslav Schekin in DBA - русскоговорящее сообщество
Ваня
Всем привет, народ
Может кто-то обьяснить в какой ситуации нужно строить кластерные индексы, а в какой некластерные?
Их отличия я знаю, но что-то непонятно пока для меня когда какие использовать
А СУБД-то какая, на всякий случай (вдруг не MS SQL)?
источник

В

Ваня in DBA - русскоговорящее сообщество
Yaroslav Schekin
А СУБД-то какая, на всякий случай (вдруг не MS SQL)?
MS)
источник

YS

Yaroslav Schekin in DBA - русскоговорящее сообщество
Ну так там clustered index — это knee-jerk reaction best practice по умолчанию, если я правильно помню. ;)
Можно и "наколоться", конечно — https://use-the-index-luke.com/blog/2014-01/unreasonable-defaults-primary-key-clustering-key
И я подобные случаи видел на практике, кстати.
источник

В

Ваня in DBA - русскоговорящее сообщество
Yaroslav Schekin
Ну так там clustered index — это knee-jerk reaction best practice по умолчанию, если я правильно помню. ;)
Можно и "наколоться", конечно — https://use-the-index-luke.com/blog/2014-01/unreasonable-defaults-primary-key-clustering-key
И я подобные случаи видел на практике, кстати.
то есть я правильно понял что комбинировать кластерные индексы и обычные в одной таблице - это не самый лучший подход?
источник

YS

Yaroslav Schekin in DBA - русскоговорящее сообщество
Ваня
то есть я правильно понял что комбинировать кластерные индексы и обычные в одной таблице - это не самый лучший подход?
В смысле "индексы"? "Кластерный индекс" только один, а остальное зависит от ситуации — я же про это и дал ссылку.
источник