Рубрики

ВОРОТА | Gate IT 2007 | Вопрос 66

Рассмотрим следующие схемы отношений:

    • b-схема = (b-имя, b-город, активы)
    • a-схема = (a-num, b-name, bal)
    • d-схема = (c-имя, a-номер)

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

П c-name ( σb-city = «Агра» ⋀ бал <0 (филиал ⋈ (счет ⋈ вкладчик)

Какой из следующих запросов является наиболее эффективной версией вышеуказанного запроса?
(A) П c-namebal <0b-city = филиал «Агра» ⋈ счет) ⋈ вкладчик)
(B) П c-name (σb -city = филиал «Агра» ⋈ (σ bal <0 счет ⋈ вкладчик))
(C) П c-name (σb -city = «Агра» филиал ⋈ σb -city = «Агра» ⋀ bal <0 счет) ⋈ вкладчик)
(D) П c-name ( σb-city = «Агра» ⋀ бал <0 счет ⋈ вкладчик))

Ответ: (А)
Объяснение:

Для лучшей обработки записей мы всегда должны делать выбор перед объединением, чтобы избежать рассмотрения ненужных кортежей для объединения (для запроса SQL это не является строго обязательным, поскольку СУБД перестроит запрос, чтобы сделать его более эффективным), а обработка таблицы меньшего размера повышает эффективность. чем больше.

вариант (A) : П c-name (σ bal <0 (σ b-city = филиал «Агра» ⋈ счет) ⋈ вкладчик) здесь мы делаем соединение между относительно меньшей таблицей (филиал) и большей таблицей (счет) и Вывод, который дает эта внутренняя таблица (которая меньше по сравнению с объединениями, которые мы делаем в B), используется для объединения с таблицей депозитария с условием выбора (аналогично данному запросу).
Вариант (B) : П c-name (σb-city = филиал «Агра» ⋈ (σ bal <0 счет ⋈ вкладчик)) здесь мы делаем соединение между двумя крупными таблицами счета и вкладчиком с условием выбора (для остатка меньше чем ноль), и выходные данные, которые дает эта внутренняя таблица, используются для соединения с таблицей ветвления (сравнительно меньшей таблицей) с условием выбора (для города Агра). (аналогично заданному запросу), так что опция A и опция B совпадают с заданным запросом, но между обработкой записи существует разница, так как обработка записи опции A будет уменьшена до некоторой степени. (поскольку отфильтрованные условия применяются после объединения между одной меньшей и одной большей таблицей, что даст сравнительно меньшую таблицу, чем объединение двух больших таблиц). Таким образом, общий вариант А намного лучше, чем вариант Б.
опция (C) : П c-name ((σ b-city = филиал «Агры» ⋈ σ b-city = «депозитор« Агры ») Неправильно, поскольку в a-схеме нет столбца b-города.
опция (D) : П c-name (σb-city = филиал «Агра» ⋈ (σb-city = вкладчик «Агра»))
Неправильно, так как в a-схеме нет столбца b-города.
⋀ бал <0 аккаунт) ⋈
⋀ бал <0 аккаунт ⋈
Примечание: не пропустите это предложение «отношения между счетами и вкладчиками намного больше, чем отношения между филиалами», потому что это делает A лучшим ответом.
Это решение предоставлено Nitika Bansal .
Тест на этот вопрос

Рекомендуемые посты:

ВОРОТА | Gate IT 2007 | Вопрос 66

0.00 (0%) 0 votes