Последние дни я пытался найти решение следующего вопроса.
Предположим, что у нас есть следующие две таблицы.
Фильм(ID',Название,Страна,Дата производства)
Актер(ID',имя,жанр,национальность)
Актёрский состав(Actor_ID',Film_ID',Роль)
Данная информация:
Film содержит N(film)=50 000 записей, r(film)=40 байт, последовательная организация, индекс по PK
Актер содержит N (актер) = 200 000 записей r (актер) = 80 байт, организован в кучу, индекс на PK
Приведение содержит N(приведение)=100 000 записей,r(приведение)=25 байт, организовано в кучу, без индексов
Дерево выполнения и выражение отношения для плана выполнения показано на следующем рисунке:
Для соединения нижнего уровня между актерским составом и фильмом я рассчитываю следующее:
Блочное вложенное циклическое соединение: Bcast x Bfilm
Объединение вложенных циклов индекса: Bcast + Ncast x Cfilm
Я сохраняю наименьшее значение, которое дается с INLJ.
Вопрос:
Теперь, как я могу рассчитать размер объединенной таблицы и новый r, который представляет собой размер записи в новой объединенной таблице, чтобы продолжить и вычислить соединение верхнего уровня между уже объединенной таблицей с таблицей-актером после того, как подсчитали стоимость B в блоках, которые потребуются для операции соединения?