Size: a a a

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

2021 March 11

AS

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

IZ

Ilia Zviagin in DBA - русскоговорящее сообщество
Ваня
Я утрировано
Сложно говорить о индексах абстрактно утрировано...
источник

AS

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

В

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

В

Ваня in DBA - русскоговорящее сообщество
Чтобы из более маленьких разделов было удобнее делать селекты
источник

AS

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

В

Ваня in DBA - русскоговорящее сообщество
Но мне интересно, а что если один из этих разделов тоже достаточно большой ?
источник

AS

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

В

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

В

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

В

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

И есть поля, к примеру, которые мы обозначим как
a1, a2. По ним тоже построен индекс

И если я напишу SELECT * FROM Messages WHERE DialogId = 3 (тут идет выборка по кластерному индексу как я понимаю) and A1 = 4 and A2 = 5 (вот сейчас мы будем искать в физическом разделе индекса? или не имеет смысла тогда строить индекс по a1 и a2 отдельно)
источник

AS

Anatoly Shirokov in DBA - русскоговорящее сообщество
Ваня
как все это будет работать в ситуации если например у нас есть
DialogId - по нем например построен кластерный индекс

И есть поля, к примеру, которые мы обозначим как
a1, a2. По ним тоже построен индекс

И если я напишу SELECT * FROM Messages WHERE DialogId = 3 (тут идет выборка по кластерному индексу как я понимаю) and A1 = 4 and A2 = 5 (вот сейчас мы будем искать в физическом разделе индекса? или не имеет смысла тогда строить индекс по a1 и a2 отдельно)
кластерный в этом случае физически сгруппирует данные и у тебя не будет кеш миссов при операциях IO, ну а все остальное просто поможет эффективно отобрать кандидатов, хотя как работает черный ящик MS я не особо знаю, RUSHMORE они туда не затянули?
источник

IZ

Ilia Zviagin in DBA - русскоговорящее сообщество
Ваня
как все это будет работать в ситуации если например у нас есть
DialogId - по нем например построен кластерный индекс

И есть поля, к примеру, которые мы обозначим как
a1, a2. По ним тоже построен индекс

И если я напишу SELECT * FROM Messages WHERE DialogId = 3 (тут идет выборка по кластерному индексу как я понимаю) and A1 = 4 and A2 = 5 (вот сейчас мы будем искать в физическом разделе индекса? или не имеет смысла тогда строить индекс по a1 и a2 отдельно)
И если я напишу

SELECT * FROM Messages WHERE DialogId = 3

(тут идет выборка по кластерному индексу как я понимаю)

Нет, понимаешь неправильно.

and A1 = 4 and A2 = 5
(вот сейчас мы будем искать в физическом разделе индекса? или не имеет смысла тогда строить индекс по a1 и a2 отдельно)

Никаких физических разделов индекса не существует.

Индексы любые имеет или не имеет смысл строит независимо от наличия или отсутствия кластерного индекса в таблице.
источник

IZ

Ilia Zviagin in DBA - русскоговорящее сообщество
Anatoly Shirokov
кластерный в этом случае физически сгруппирует данные и у тебя не будет кеш миссов при операциях IO, ну а все остальное просто поможет эффективно отобрать кандидатов, хотя как работает черный ящик MS я не особо знаю, RUSHMORE они туда не затянули?
RUSHMORE они туда НЕ затянули.

Да и вообще это  малоэффективная техника.
источник

В

Ваня in DBA - русскоговорящее сообщество
Ilia Zviagin
И если я напишу

SELECT * FROM Messages WHERE DialogId = 3

(тут идет выборка по кластерному индексу как я понимаю)

Нет, понимаешь неправильно.

and A1 = 4 and A2 = 5
(вот сейчас мы будем искать в физическом разделе индекса? или не имеет смысла тогда строить индекс по a1 и a2 отдельно)

Никаких физических разделов индекса не существует.

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

только мне интересно с первым пунктом

SELECT * FROM Messages WHERE DialogId = 3
(тут идет выборка по кластерному индексу как я понимаю)

Почему это неверно если cluster-индекс построен по DialogId
источник

IZ

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

только мне интересно с первым пунктом

SELECT * FROM Messages WHERE DialogId = 3
(тут идет выборка по кластерному индексу как я понимаю)

Почему это неверно если cluster-индекс построен по DialogId
Не знаю, почему, просто неверно. С какого рожна ?
источник

IZ

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

только мне интересно с первым пунктом

SELECT * FROM Messages WHERE DialogId = 3
(тут идет выборка по кластерному индексу как я понимаю)

Почему это неверно если cluster-индекс построен по DialogId
С чего ты взял, что этот запрос будет использовать индекс по DialogId ?

Я вот не понимаю, совсем это не обязательно.
источник

В

Ваня in DBA - русскоговорящее сообщество
Ilia Zviagin
С чего ты взял, что этот запрос будет использовать индекс по DialogId ?

Я вот не понимаю, совсем это не обязательно.
Я думал что если по определенному полю построен индекс - при выборке по нему он будет использоваться, разве нет ?
источник

IZ

Ilia Zviagin in DBA - русскоговорящее сообщество
Ваня
Я думал что если по определенному полю построен индекс - при выборке по нему он будет использоваться, разве нет ?
Разве нет.
источник

В

Ваня in DBA - русскоговорящее сообщество
ну индексы и нужны для быстрой выборки
источник