Классика баз данных - статьи

       

Оптимизация запросов


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

РСУБД обычно демонстрируют лучшую производительность при соединении нескольких таблиц с использованием одного оператора SQL, а не рассредоточивании таблиц по нескольким операторам. Обратите внимание, что это противоречит инкапсуляции! Инкапсуляция стимулирует разработчиков к минимизации комбинаций таблиц в запросах; оптимизация запросов поощряет в точности противоположный подход – крупные комбинации таблиц.

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



Содержание раздела