72 похожих чатов

Всем привет, народ Может кто-то обьяснить в какой ситуации нужно

строить кластерные индексы, а в какой некластерные?
Их отличия я знаю, но что-то непонятно пока для меня когда какие использовать

31 ответов

22 просмотра

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

Ваня- Автор вопроса
Anatoly Shirokov
ну давай на примере. есть районы города. твоя сист...

То есть в такой ситуации кластерный индекс имеет выигрыш перед некластерным, верно?

Ваня
То есть в такой ситуации кластерный индекс имеет в...

в такой ситуации записи локализуются физически по указанному тобой в индексе полю, как бы кластерный индекс разделяет множество твоих данных на физические корзины

Ваня- Автор вопроса
Anatoly Shirokov
ну давай на примере. есть районы города. твоя сист...

и если рассмотреть ситуацию, что город - Москва и у нас районы добавляются просто постоянно ? тогда какой из индексов покажет себя лучше?

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

Ваня
MS)

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

Ваня- Автор вопроса
Yaroslav Schekin
Ну так там clustered index — это knee-jerk reactio...

то есть я правильно понял что комбинировать кластерные индексы и обычные в одной таблице - это не самый лучший подход?

Ваня
то есть я правильно понял что комбинировать класте...

В смысле "индексы"? "Кластерный индекс" только один, а остальное зависит от ситуации — я же про это и дал ссылку.

ТУПО: для PK - кластерный, для всего остального — нет. СОВСЕМ ТУПО: не знаешь, какой индекс делать кластерным — делай все некластерными. ПО-УМНОМУ: если надо делать большие range scan -ы по индексу — делай его кластерным. Но повезёт только один раз...

Ваня
То есть в такой ситуации кластерный индекс имеет в...

Кластерный перед некластерным вообще имеет очень маленький выигрышь, хотя и имеет конечно, но у него есть один существенный недостаток (у кластерного) - он в таблице может быть ТОЛЬКО ОДИН.

Ваня- Автор вопроса
Ilya Zviagin
ТУПО: для PK - кластерный, для всего остального — ...

Хорошо, а если представим ситуацию такую Вот есть у нас мессенджер, есть какая-то таблица сообщений с 10 миллионами записей Мы зафигачили кластер-индекс по диалогу например К примеру у нас есть диалог с миллионом записей - то есть какая-то выборка по нему будет все равно не очень быстрая И мне например надо там еще выбирать по каким-то свойствам сообщения с этого диалога (по каким сложно придумать, но пусть этих свойств еще будет 3) Стоит ли строить некластерный индекс по этим полям в такой ситуации?

Yaroslav Schekin
А СУБД-то какая, на всякий случай (вдруг не MS SQL...

А сейчас уже почти всё равно... очень расхожая схема сейчас у многих СУБД — кластерный PK

Ваня
Хорошо, а если представим ситуацию такую Вот есть...

Стоит ли строить (некластерный) индекс по этим полям в такой ситуации? — это вообще другой, совершенно отдельный вопрос. НИКАК не связанный с предыдущим вопросом.

Ваня
Хорошо, а если представим ситуацию такую Вот есть...

Судя по всему, тебе подойдёт, на твоём уровне понимания, пункт "ТУПО" , тем более, что SQLServer

Ваня
Хорошо, а если представим ситуацию такую Вот есть...

Там в диалогах текст Идексы текста работают по другому Наверняка этот индекс будет отдельным столбцом в таблице Или типа того Вроде

Ilya Zviagin
ТУПО: для PK - кластерный, для всего остального — ...

И вот ровно с таким подходом (на уровне коленного рефлекса) я и видел ситуации (суть которых описана по ссылке), когда "умница"-консультант или DBA, глядя на heap-таблицу с десятком индексов, говорил "ну что же вы, это же плохая практика! Срочно переделать!"... и после внедрения "улучшения" производительность падала в разы. ;) Так что лучше думать, если ситуация такая, когда это может иметь значение, вот в чём был мой посыл.

Ваня- Автор вопроса
Alexander E
Там в диалогах текст Идексы текста работают по д...

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

Yaroslav Schekin
И вот ровно с таким подходом (на уровне коленного ...

Так это был наверное консультант по SQLServer...

Ilya Zviagin
Так это был наверное консультант по SQLServer...

Да. А где ещё "основное" название index-organized table сейчас "кластерный индекс", кстати?

Ваня
я имею ввиду не по тексту выборку делаем, а по как...

Сложно говорить о индексах абстрактно...

Ваня- Автор вопроса
Ilya Zviagin
Сложно говорить о индексах абстрактно...

Хорошо, ок Пусть будет делаем выборку в этом диалоге (это будет груповой чат) сообщений, которые были прочитаны и которые написали женщины допустим Так лучше ?

Yaroslav Schekin
И вот ровно с таким подходом (на уровне коленного ...

Я каждый запрос из моих сервисов к бд проверяю руками Смотрю где индексы настроены, а где нужно настроить И да, это ведет к большему количеству индексов чем вроде как нужно Но я ж могу добавить всегда шард на запись А если все совсем плохо станет, то позвать консультанта :)

Ваня
Хорошо, ок Пусть будет делаем выборку в этом диал...

Нет, хуже. Индекс не нужен для этих условий.

Ваня- Автор вопроса
Ilya Zviagin
Нет, хуже. Индекс не нужен для этих условий.

Я понимаю что не нужен так как это булевые значения

Ilya Zviagin
Везде, кроме оракла и PG... AFAIK

Да, похоже на то, спасибо! Всё-таки не очень удачное название (по самому названию непонятно, что это такое... а некоторые и вовсе понимают иначе), IMHO.

Ваня
Я понимаю что не нужен так как это булевые значени...

А можно ответный вопрос? Для чего данные физически размещают вместе? Ты спросил про кластерные, получил несколько ответов. Но для чего эти кластерные индексы были придуманы?

Ваня- Автор вопроса
Anatoly Shirokov
А можно ответный вопрос? Для чего данные физически...

В моем понимании для более быстрой выборки

Похожие вопросы

Обсуждают сегодня

День добрый, подскажите пожалуйста, есть ли какой-то способ сказать ребару не компилировать определённое приложение? Всю доку их перечиатл ничего подобного не нашёл
Кирилл
14
Это может быть все-таки не флудвейт? у меня ботфазер принимает изменения и отображает даже что они изменились, на видео видно что он прислал якобы уже измененное описание, н...
OVERLINK
13
Вопрос на перед, на следующую пятницу. Сколько строк кода можно вешать на одного программиста, понятно что если проект хорошо написан то можно и миллион. Но есть же где то пре...
AlekseyK Kluchnikov
31
Немного оффтопа: а кто на чем сидит для осдева в плане ide/редактора? Последнее время сидел на vscode, но я его прям не могу нормально воспринимать, перешел на сlion, но меня...
Evg Resh
29
Что за японодичь? Мне хоть m68k, хоть 8080, 8088, на любом можно что-то создать
Егор
5
и да, кто сказал что у эпла именно такой isa?
Boris Vinogradov
5
всем привет помогите пожалуйста используя CDN (GCP) у игроков из вьетнама загружается конфиг (размер 999 bytes) загружается 5 и более минут н а других CDN сервисах такой пробл...
Andrew Krw.
1
Вот объясните, как это работает: Вот есть допустим unix-подобная система, и программа запускает допустим printf или fork, как это передается ядру, и как оно обрабатывать начин...
Егор
14
ну так тогда какой эплы юзают набор инструкций, и тогда считаються ли они армами вообще?
Shvabrikk Nya
4
Добрый день. Мне посоветовали обратиться к вам в чат за помощью. Ситуация описана на скрине. Как мне сказали, мне на бота навесили флудвейт. Есть ли возможность снять его ра...
OVERLINK
7
Карта сайта