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

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

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

31 ответов

27 просмотров

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

Ваня- Автор вопроса
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
А можно ответный вопрос? Для чего данные физически...

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

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

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

Гайс, вопрос для разносторонее развитых: читаю стрим с юарта, нада выделять с него фреймы с определенной структурой, если ли чо готовое, или долбаться с ринг буффером? нада у...
Vitaly
9
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
длина пакета фиксированная, или меняется?
Okhsunrog
7
Вот еще странный косяк, подскажите как бороться. Я git clone сделал себе всего embassy и примеры там запускаю. Всё хорошо. Но вот решил в cargo.toml зависимости не как в приме...
Lukutin R2AJP
5
А в каком формате фреймы? Сам формат сейчас придумываешь, или что-то готовое нужно распарсить?
Okhsunrog
5
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Добрый вечер, Пока не совсем понимаю как наладить общение между телеграм ботом и ПО для работы с сим боксом. По самому боту так понял: - Нужен некий баланс, который можно поп...
Magic
6
Всем привет, нужна как никогда, нужна помощь с IO в загрузчике. Пишу в code16 после установки сегментных регистров, пишу вывод символа. Пробовал 2 варианта: # 1 mov $0x0E, %a...
Shadow Akira
14
Раз начали говорить про embassy, то присоединюсь со своими парой вопросов. 1) Есть ли сопоставимые аналоги для асинхронного кода в emdebbed? 2) Можно ли внутри задач embassy ...
NI_isx
6
сделал сайт, прикрутил в боте сайт, и виджет логина. как автоматически логинить пользователя в аккаунт(телеграм), при входе с бота?
Александра Чернивецкая
5
Карта сайта