Почему индекс заставляет запрос выполняться быстрее? Что делает индекс? В частности, в Access, если вы объявляете столбец как индекс, как это влияет на запрос?
Есть идеи?
vba
microsoft-access
sql
microsoft-access-2003
Coding Enthusiast
источник
источник
Ответы:
Это очень сложная вещь, поэтому я дам вам краткое изложение.
Данные хранятся на диске внутри файла, поэтому каждая запись в таблице в файле имеет физический адрес хранения, с которого она начинается.
Индексы хранят индексированное поле и адрес хранения, по которому происходит запись, в древовидной структуре данных, которая оптимизирована для поиска (часто B-Tree), так что для навигации по структуре данных, поиска нужных индексированных данных требуется очень мало сравнений и затем получить адрес хранения, по которому хранится запись. Затем запись сама может быть восстановлена.
Таким образом, вместо чтения таблицы строка за строкой, чтобы найти запись, мы просим индекс. Индекс выполняет 3 чтения через B-дерево и находит индексируемый элемент, который ищется, с адресом данных, привязанных к элементу, а затем возвращает адрес. Если ваша запись была 1024-й строкой в таблице, вы только что выполнили задачу за 4 чтения вместо 1025.
источник
Из этой статьи Microsoft
Создать и использовать индекс для повышения производительности
Вы можете использовать индекс, чтобы помочь Microsoft Office Access быстрее находить и сортировать записи. Индекс хранит расположение записей на основе поля или полей, которые вы выбираете для индексации. После того как Access получит местоположение из индекса, он сможет извлечь данные, перейдя непосредственно в правильное местоположение. Таким образом, использование индекса может быть значительно быстрее, чем сканирование всех записей для поиска данных.
источник