DB - обработка запросов - индексное соединение с вложенным циклом - PullRequest
0 голосов
/ 10 января 2012

У меня есть отношение R с 10 блоками. S с 1000 У меня также есть 50 уникальных записей для атрибута A в отношении R и 5000 уникальных записей для атрибута A в отношении S. У меня есть 100 записей на каждый блок. Обратите внимание, что мы предполагаем равномерное распределение различных значений в каждом отношении. S имеет индекс сцепления для атрибута соединения A.

Вопрос в следующем: во скольких блоках S хранятся записи, участвующие в соединении с R. Мне нужно ответить с лучшим и наихудшим случаем.

Я думал, что если R имеет 50 уникальных записей для A и его индекс кластеризации, потребуется минимум 1 блок для каждого уникального и максимум 2., а затем ответ будет 50 или 100.

Но почему я не могу поместить 5 уникальных записей в каждый блок, поэтому максимальное количество блоков составляет 10?

1 Ответ

1 голос
/ 10 января 2012

Насколько я понимаю, такова ситуация:

S имеет 1000 блоков с 100 записями / блок, что приводит к 100000 записей (макс.).Из этих 100000 записей 5000 уникальных (разных) значений для атрибута A.

Edit :

Если все они распределены равномерно, каждое уникальное значение для A будет иметь 20 строкв с.Если все 50 уникальных значений для A в R присутствуют в S, тогда будут выбраны 50 групп строк.

В лучшем случае все они хранятся вместе (благодаря кластерному индексу), и вам нужно прочитать 10 блоков.[(50 значений для A * 20 строк с одинаковым значением в записях S / 100 на блок = 10 блоков]

В худшем случае 20 строк для каждого значения в A используют 2 блока. Это приведет к100 блоков, которые нужно прочитать из S.

На второй вопрос:

Поскольку у вас есть кластеризованный индекс, содержащий столбец A, все одинаковые значения для A будут сохранены вместе.более одного блока, если они не вписываются в один или если блок был заполнен другими значениями и, следовательно, не может поместиться в один блок.

Внимание: возможно, я не полностью понял ваш первоначальный вопрос и, следовательно,мой ответ может быть совершенно неверным!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...