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

       

в запросе не содержатся ни


Если в запросе не содержатся ни раздел GROUP BY, ни раздел ORDER BY, то "интересный" порядок отсутствует, и выбирается один наиболее дешевый путь доступа. Если имеются разделы GROUP BY или ORDER BY, то стоимость пути доступа, производящего это "интересное" упорядочивание, сравнивается со стоимостью наиболее дешевого неупорядоченного пути плюс стоимость сортировки QCARD кортежей в должном порядке. Самая дешевая альтернатива выбирается в качестве плана для данного блока запроса.

Оценочные формулы для путей доступа к одному отношению приведены в таб. 2. В этих формулах участвуют число обращений к индексным страницам плюс число обращений к страницам данных плюс коэффициент взвешивания, умноженный на число обращений к RSI для выборки кортежей. W - это коэффициент взвешивания между обращениями к страницам и вызовами RSI. В некоторых ситуациях приводится несколько альтернативных формул в зависимости от того, помещается ли весь набор выбранных кортежей в буферном пуле RSS (или части пула, выделенной пользователю). Мы предполагаем, что для кластеризованных индексов страница остается в буфере до тех пор, пока из нее не будут выбраны все кортежи. Для некластеризованных индексов предполагается, что отношения, не помещающиеся в буфер, достаточно велики по сравнению с размером буфера, и для каждой выборки кортежа требуется чтение страницы.

Ситуация

Стоимость (в страницах)

Уникальный индекс, соответствующий предикату сравнения на равенство 1+1+W
Кластеризованный индекс, соответствующий одному или нескольким булевским сомножителям F(preds) * (NINDX(I) + TCARD) + W * RSICARD
Некластеризованный индекс, соответствующий одному или нескольким булевским сомножителям F(preds) * (NINDX(I) + NCARD) + W * RSICARD или

F(preds) * (NINDX(I) + TCARD) + W * RSICARD,

если отношение помещается в буфер System R
Кластеризованный индекс, не соответствующий какому-либо булевскому сомножителю (NINDX(I) + TCARD) + W * RSICARD
Некластеризованный индекс, не соответствующий какому-либо булевскому сомножителю (NINDX(I) + NCARD) + W * RSICARD

или (NINDX(I) + TCARD) + W * RSICARD,

если отношение помещается в буфер System R
Сегментное сканирование TCARD/P + W * RSICARD
Таблица 2. Оценочные формулы


Содержание  Назад  Вперед