Развитие идей и приложений реляционной СУБД System R


Оптимизация в System R - часть 3


1) Если для отношений R и S определены индексы на полях, по которым происходит соединение, эти индексы последовательно сканируются, пока не будет обнаружена пара tid'ов с общим значением ключа. После этого выбирается соответствующий кортеж, например, из отношения R, и производится его проверка на удовлетворение предикату ограничения на кортежи отношения R из условия выборки. (Если этот кортеж не удовлетворяет предикату ограничения, продолжается параллельное сканирование индексов, начиная с индекса на R.) Затем продолжается сканирование индекса на отношении S, выбираются все кортежи с тем же значением ключа, и те из них, которые удовлетворяют предикату ограничения на S из условия выборки, помещаются во временную память. Путем сканирования индекса на отношении R поочередно выбираются кортежи этого отношения с тем же значением ключа. Каждый такой кортеж, удовлетворяющий предикату ограничения на R, соединяется со всеми кортежами из S, находящимися во временной памяти , образуя очередную часть результирующего отношения. Далее продолжается параллельное сканирование индексов на R и S с целью подбора очередной пары. Временная память должна иметь размер, достаточный для хранения максимального числа кортежей отношения S, которые могут соединиться с одним кортежем отношения R.

2) Любым способом сканируются отношения R и S, и образуются два файла W1 и W2. При этом файл W1 (W2) содержит все кортежи R (S), удовлетворяющие предикату ограничения на кортежи отношения R (S) из условия выборки. Далее файлы W1 и W2 сортируются в соответствии со значениями полей соединения, после чего в процессе их параллельного сканирования производится соединение (это напоминает сортировку со слияниями). Напомним, что в интерфейсе RSS предусмотрены соответствующие операции.

3) Любым способом сканируется отношение S, и поочередно выбираются кортежи. Если очередной кортеж s удовлетворяет предикату ограничения на кортежи S из условия выборки, то этот кортеж заносится в область основной памяти V2, если в ней еще есть место.


Начало  Назад  Вперед