Информационный сайт

 

Реклама
bulletinsite.net -> Книги на сайте -> Программисту -> Тоу Д. -> "Настройка SQL. Для профессионалов" -> 119

Настройка SQL. Для профессионалов - Тоу Д.

Тоу Д. Настройка SQL. Для профессионалов — СПб.: Питер, 2004. — 333 c.
ISBN 5-94723-959-0
Скачать (прямая ссылка): nastroykasqldlyaprof2004.djvu
Предыдущая << 1 .. 113 114 115 116 117 118 < 119 > 120 121 122 123 124 125 .. 161 >> Следующая


ВНИМАНИЕ --------------------------------------------------------------------------------

Меня часто просят настроить или установить производительность запроса, определяющего представление, не предоставляя мне список всех запросов, использующих данное представление. Также меня просят настроить запросы, использующие представления, не показывая запрос, определяющий представление. Обе эти просьбы невыполнимы. Дело в том, что ни однн определяющий представление запрос, чуть более сложный, чем SELECT <Список_простых_столбцов> FROM <Однд_тдблицд>, не может прекрасно выполняться во всех возможных запросах, использующих представление. И ни один использующий представление запрос не будет хорошо выполняться, если в запросе, определяющем представление, не используется эффективный путь к необходимым данным.

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

Диаграммное изображение запросов, использующих представления

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

7. Диаграммное изображение и настройка сложных SQL-запросов

1. Создайте диаграмму для всех определяющих представление запросов, как если бы это были отдельные запросы. Все диаграммы запросов, определяющих представление, должны быть нормальными, в том смысле, что у них должна быть одна корневая детальная таблица и указывающие только вниз соединения «многие к одному» от этого верхнего узла, соответствующие структуре дерева. Если определяющий представление запрос не отображается на нормальный скелет запроса, то запросы, использующие это представление, будут, вероятно, работать плохо и возвращать неправильные результаты. Считайте первичный ключ корневой детальной таблицы запроса, определяющего представление, виртуальным первичным ключом всего представления.

2. Создайте диаграмму запроса, использующего представление, считая, что все представления — это всего лишь простые таблицы. У соединения с представлением должна быть стрелка на конце, соответствующем представлению (и вам следует помещать представление на нижний конец связи), только если соединение производится с виртуальным первичным ключом представления. Символически укажите условия фильтрации для представления в запросе, использующем представление, в виде буквы F, не задумываясь пока что о вычислении коэффициента фильтрации. Обведите пунктирной окружностью каждый узел.

3. Разверните диаграмму запроса, использующего представления, созданную на шаге 2, заменив все узлы, соответствующие представлениям, полной диаграммой запроса, определяющего представление, из шага 1. Затем обведите пунктирной линией поддерево запроса, определяющего представление. Любое соединение сверху будет присоединяться к определяющему представление поддереву как его корневой детальный узел. Соединения, отходящие от представления вниз, могут начинаться от любого узла представления, в зависимости от того, какая из таблиц запроса, определяющего представление, содержит внешний ключ (в определяющем представление списке SELECT) соединения. Любое условие фильтрации для представления становится фильтрующим условием соответствующего узла запроса, определяющего представление, в зависимости от того, на столбец какого узла действует зто условие. Найдите фактический коэффициент фильтрации для всех подобных условий обычным способом (дополняя символ F на начальной диаграмме запроса). Если необходимо, комбинируйте коэффициенты фильтрации из определяющих представление и использующих представление запросов, если эти запросы накладывают различные фильтры на одни и те же узлы.

Возможно, эти правила покажутся вам абстрактными и сложными, но пример должен прояснить процесс.

Возьмем два определения представлений:

CREATE VIEW ShipmentV AS

SELECT A.Address_ID Shipment_Address_ID, A.Street_Addr_Linel Shipment_Street_Address_Linel. A.Street_Addr_Line2 Shipment_Street_Address_Line2. A.City_Name Shipment_City_Name.

A.StateAbbreviation Shipment_State. A.ZIP_Code Shipment_ZIP.

S.Sh і pment_Da te. S.Sh і pment_ID FROM Shipments S. Addresses A WHERE S.Address ID = A.Address ID

CREATE VIEW Recent Order V AS
Запросы с представлениями

243

SELECT 0.0rder_ID, 0.0rder_Date. O.Customer_ID.

С. PhoneJIumber CustomerJIa і nJ>hone, C.First_Name Customer_First_Name.

C.Last_Name Customer_Last_Name.

C.Address_ID Customer_Address_ID. OT.Text Order_Status FROM Orders 0. Customers C. CodeJTranslations OT WHERE O.CustomerlD = C.Customer_ID AND O.Status_Code = OT.Code AND DT.Code_Type = 'ORDERJ>TATUS'

AND D. DrderJDate > SYSDATE - 366

Шаг I требует создания диаграмм для обоих определяющих представления запросов, как показано на рис. 7.33. Для создания этих диаграмм мы воспользовались методом, описанным в главе 5, и использовали ту же статистику для коэффициентов фильтрации и соединения, что и для соответствующего примера, показанного на рис. 5.5.
Предыдущая << 1 .. 113 114 115 116 117 118 < 119 > 120 121 122 123 124 125 .. 161 >> Следующая
Реклама
Авторские права © 2009 AdsNet. Все права защищены.
Rambler's Top100