2015-11-20 1 views
0

Я прочитал и наблюдало много блог и видео, все говорили о-Как оракул индексы делает подстановки быстрые

  1. Как индекс может создан
  2. Тип индексов
  3. Как различных индексов внутренней структуры.

Но ни одна из статей не объясняет this-

  • Какие специальные индексы делает так, что поиск становится быстрым?

Задает ли он значения (значения столбца) в памяти? Пожалуйста, просветите меня своими мыслями.

спасибо.

+1

Как помогает страница в книге? Он работает по одной и той же концепции. – Lokesh

ответ

1

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

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

Но когда мы ищем клиента, мы делаем это на основе некоторого поля, например, фамилии. Здесь индексируется индекс. Индекс - это организованная структура, которая обеспечивает быстрое сопоставление от значения поля к rowId.

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

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

Предположите, что фамилия клиента начинается с M. Это приводит к поиску части индекса M. В отличие от линейного поиска таблицы, это быстро сужает поле поиска до 1/26 части целого, потому что мы исключили части индекса, где фамилия начинается с любой из 25 букв.
То же самое относится к следующему этапу поиска. Предположим, что вторая буква от имени клиента - o. Это дополнительно сужает поле до 1/26-го из последних имен, начинающихся с M. Продолжая, в течение нескольких шагов индекс быстро сопоставляет фамилию Moore строке row клиента.

Та же идея может быть расширена путем добавления другого поля, например, имени для индекса. Если 1 миллион клиентов, пройдя несколько шагов древовидной структуры индекса, база данных может быстро найти rowId и избежать поиска миллионов строк.

+0

Это потрясающее объяснение. Спасибо, Томас. – Sam

1

Это делает его быстрее, потому что индекс добавляет структуру к данным.

Подумайте о телефонной книге, в которой все имена хранятся в определенном порядке, было бы очень много времени, чтобы найти номер конкретного человека, но если вы сохраните имена в алфавитном порядке, это намного проще и быстрее. Это будет кластеризованный индекс в базе данных.

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

Смежные вопросы