АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомДругоеЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция

Выбор индекса

Читайте также:
  1. A) Выборочной совокупностью
  2. I. Выбор температурных напоров в пинч-пунктах и опорных параметров КУ.
  3. II Выбор схемы станции
  4. II этап: запуск программы PowerPoint и выбор режима отображения.
  5. III. Из-за чего шла борьба на выборах?
  6. ZKFINDSP (ЗП.Коэффициенты индексации Хроника)
  7. А) Первичный выбор жизненного пути.
  8. Агрегатная форма индекса и индексы в средней арифметической и средней гармонической формах
  9. Агрегатная форма общего индекса.
  10. Алгоритмы выбора антибактериальной терапии
  11. Альтернативные издержки и проблема экономического выбора. Кривая производственных возможностей.
  12. Альтернативные модели потребления: модель межвременного выбора И. Фишера, теория перманентного дохода М. Фридмена, гипотеза жизненного цикла Ф. Модильяни

Идентификация аргументов поиска позволяет оптимизатору принять решен о том, можно ли использовать один или более существующих индексов.

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

Это решение зависит от селективности соответствующего выражения. Селективностьвыражения определяется как отношение количества строк, удовлетворяющих условию, к общему количеству строк в таблице.

Оптимизатор проверяет селективность выражения с индексированным столбцом, используя статистические данные,которые создаются для распределения значений в столбце. Оптимизатор запросов учитывает эту информацию для определения оптимального плана запроса, оценивая стоимость использования индекса для выполнения запроса.

Статические данные существуют как для индексов, так и для столбцов. Database Engine автоматически создает (для индекса и столбца) статистические данные, если для базы данных активирована опция auto_create_statistics.

 

Селективность выражения с индексированным столбцом

Оптимизатор использует индексы для повышения скорости выполнения запроса. Когда вы обращаетесь к таблице, у которой нет индексов, или если оптимизатор принимает решение не использовать существующий индекс, система выполняет последовательное сканирование таблицы.

В процессе сканирования таблицы Database Engine последовательно читает страницы данных таблицы для поиска строк, которые принадлежат результирующему набору данных.

Доступ по индексу является методом доступа, при котором СУБД читает и записывает страницы данных с использованием индекса. Так как доступ по индексу значительно сокращает количество операций ввода/вывода, он обычно выполняется гораздо быстрее, чем сканирование таблицы.

Database Engine использует некластеризованный индекс для поиска данных одним из двух способов (было рассмотрено ранее).

Если есть куча (таблица без кластеризованного индекса), то система вначале исследует структуру некластеризованного индекса, а затем отыскивает строку, используя идентификатор этой строки.

Однако если таблица кластеризованная таблица, то проход по кластеризованной индексной структуре выполняется вслед за проходом по индексной структуре некластеризованного индекса таблицы.

С другой стороны, использование кластеризованного индекса для поиска данных всегда уникально: Database Engine начинает поиск с корневого узла соответствующего В-дерева и обычно после трех или четырех операций чтения достигает узла листа, где хранятся данные. По этой причине проход по индексной структуре кластеризованного индекса почти всегда выполняется значительно быстрее, чем проход по индексной структуре соответствующего некластеризованного индекса.

Отсюда следует, что ответ на вопрос, какой метод доступа (сканирование индекса или сканирование таблицы) является наиболее быстрым, не является простым и зависит от селективности и типа индекса.

Имеются примеры тестов, показывающих, что сканирование таблицы часто выполняется быстрее, чем доступ к некластеризованным индексам, когда выбирается, по меньшей мере, 10% строк. В этом случае решение оптимизатора, когда переключаться от доступа к некластеризованному индексу к сканированию таблицы, может быть некорректным.

Но некоторым причинам кластеризованный индекс обычно выполняется быстрее, чем некластеризованный индекс. Когда система сканирует кластеризованный индекс, нет необходимости покидать структуру В-дерева для сканирования страниц данных, потому что такие страницы уже присутствуют на уровне листьев этого дерева.

Некластеризованный индекс также требует больше операций ввода/вывода, чем соответствующий кластеризованный индекс. Некластеризованному индексу нужно читать страницы данных после просмотра В-дерева.

В случае, если существует кластеризованный индекс для другого столбца (столбцов) таблицы, некластеризованному индексу нужно читать структуру В-дерева кластеризованного индекса.

Поэтому можно ожидать, что кластеризованный индекс будет выполняться значительно быстрее, чем сканирование таблицы, даже если его селективность довольно плохая (т. е. процент возвращенных строк велик, потому что запрос возвращает много строк). Имеются тесты, показывающие, что когда селективность выражения 75% или меньше, доступ к кластеризованному индексу, как правило, выполняется быстрее, чем сканирование таблицы.


1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |

Поиск по сайту:



Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Студалл.Орг (0.004 сек.)