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

 

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

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

Тоу Д. Настройка SQL. Для профессионалов — СПб.: Питер, 2004. — 333 c.
ISBN 5-94723-959-0
Скачать (прямая ссылка): nastroykasqldlyaprof2004.djvu
Предыдущая << 1 .. 73 74 75 76 77 78 < 79 > 80 81 82 83 84 85 .. 161 >> Следующая


SELECT COUNT(*) FROM Mailings M WHERE MailingJate >= SYSDATE-365:

3. Создайте диаграмму для следующего запроса:

SELECT ...

FROM Codejranslations SPCT, Code Translations TRCT. Codejranslations CTCT1 Products P. ProductJines PL. InventoryJalues IV. Brands B.

ProductJocations Loc. Warehouses W1 Regions R.

InventoryJaxingJntities ITx. InventoryJax_Rates ITxR. Consignees C WHERE W.Region ID = R.Region ID ANO Loc.WarehouseJD = W.WarehouseJD

AND W.InventoryJaxingJntityJD = ITx.InventoryJaxingJntityJD

AND ITx.InventoryJaxingJntityJO = ITxR.InventoryJaxingJntityJD

AND ITxR. Effective_StartJate <= SYSDATE

AND ITxR. EffeetiveJndJate > SYSDATE

AND ITxR.Rate > 0

AND P.ProductJD = Loe.ProduetJD

AND Loc.Quantity > 0

AND P.ProductJineJD = PL.ProductJine_ID(+)

AND P.Product ID = IV.ProductJD AND P.TaxableJnventoryJlag = 'Y'

AND P.ConsigneeJD = C.ConsigneeJD(+)

AND P.StrategicJroductJode = SPCT.Code ANO SPCT.CodeJype = 'STRATEGICJRODUCT'

AND P.TurnoverJateJode = TRCT.Code AND TRCT.CodeJype = 'TURNOVERJATE'

AND P.ConsignmentJypeJode = CTCT.CODE AND CTCT.CodeJype = 'CONSIGNMENTJYPE'

AND IV.EffectiveJtartJate <= SYSDATE AND IV.EffectiveJndJate > SYSDATE AND IV.Unit_Value > O AND P.BrandJD = B.BrandJD AND B.Name = '2Much$'

AND ITX. Tax JayJ)fJfea r = 'DEC31'

GROUP BY... DRDER BY ...
Упражнения

155

Начните с тех же предположений и статистики, что и в упражнениях 1 и 2, за исключением того, что значение поля W. Inventory_Taxi ng_Enti ty_ID указывает на допустимую налоговую сущность, только в тех случаях, когда она не равна nul 1, то есть в 5 % случаев. Количества строк для таблиц следующие:

Products = В.500 Product_Lires = 120 Irvertory_Values = 34000 Brands = 12

Product_Locatlons = 176000 Warehouses = 80 Regiors = 5

Irvertory_Taxirg_Ertities = 4 Irvertory_Tax_Rates = 7 Consignees = 14

В таблице Code_Transl ati ons существует первичный ключ из двух частей: Code_Type, Code.

В Inventory_Val ues и Inventory_Tax_Rates есть зависящий от времени первичный ключ, состоящий из идентификатора и эффективного диапазона времени, так, что любая данная дата попадает в единственный диапазон даты для любого значения ключевого ID. В частности, условия соединения с каждой из этих таблиц гарантированно уникальны, что обеспечивается условиями Effecti ve_Start_Date и Effecti ve_End_Date, являющимися частью соединений, а не отдельными фильтрами. К сожалению, удобного способа гарантировать уникальность при помощи индекса нет, это условие создается приложением. Следующие запросы возвращают количества строк, указанные в строках, следующих за каждым запросом:

Ql: SELECT COUNT(*) Al FROM Inventory_Taxing_Entities ITx WHERE ITx.Tax_Day_0f_Yea r = 'DEC31'

Al: 2

Q2: SELECT C0UNT(*) A2 FROM InventoryValues IV WHERE IV.Unit_Value>0 AND IV.Effective_Start_Date <= SYSDATE AND IV.EffectiveErd Date > SYSDATE A2: 7400

Q3: SELECT COUNTC*) A3 FROM Products P WHERE P.Taxable_Inventory_Flag = 'Y'

A3: 8300

Q4: SELECT C0UNT(*) A4 FROM ProductLocations Loc WHERE Loc.Quantity > 0 A4: 123000

Q5: SELECT C0UNT(*) A5 FROM Irventory_Tax_Rates ITxR WHERE ITxR.RATE > 0 AND ITxR.Effective_Start_Date <= SYSDATE AND ITxR.Effecti ve_Erd_Date > SYSDATE

A5: 4

Q6: SELECT C0UNT(*) A6 FROM Inventory Val ues IV WHERE IV.EffPCtive_Start_Date <= SYSDATE AND IV.Ef .‘Ctive_Erd_Date > SYSDATE A6: 8500

Q7: SELECT C0UNT(*) A7 FROM INVENTORY TAX RATES ITxR
156

5. Диаграммное изображение простых запросов SQL

WHERE ITxR.Effective_Start_Date <- SYSDATE AND ITxR.Effective End_Date > SYSDATE

A7: 4

QB: SELECT C0UNT(*) A8 FROM Code_Translations SPCT WHERE CodeJype - 'STRATEGIC_PR0DUCT'

AB: 3

Q9: SELECT C0UNT(*) A9 FROM Code_Trarslations TRCT WHERE CodeJype - 'TURNOVER_RATE'

A9: 2

QlO: SELECT COUNT(*) AlO FROM CTCT

WHERE CodeJype - 'CONSIGNMENTJYPE'

AlO: 3

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

5. Полностью упростите диаграмму запроса из упражнения 2, выполняя инструкции из упражнения 4.

6. Полностью упростите диаграмму запроса из упражнения 3, выполняя инструкции из упражнения 4.
Выбор наилучшего плана выполнения

Если упрощение проблемы эквивалентности до абстрактной математики — это обычно самая сложная часть решения задачи, то создание диаграммы запроса сложнее, чем поиск наилучшего плана выполнения на этой диаграмме. Теперь, когда вы научились справляться со сложной частью перевода запроса в диаграмму, я продемонстрирую вам легкий способ. Вот несколько вопросов, на которые вам нужно ответить, чтобы полностью описать оптимальный план выполнения для запроса.

¦ Каким образом идет обращение к каждой таблице в плане выполнения — путем полного сканирования таблицы, с использованием одного или нескольких индексов, и если применяются индексы, то какие именно?
Предыдущая << 1 .. 73 74 75 76 77 78 < 79 > 80 81 82 83 84 85 .. 161 >> Следующая
Реклама
Авторские права © 2009 AdsNet. Все права защищены.
Rambler's Top100