Что такое индекс в SQLite? - PullRequest
14 голосов
/ 21 июля 2010

Я не понимаю, что такое индекс в SQLite. (НЕ SQL) Я думаю, что это позволяет сортировать в порядке убывания и убывания и быстрее получать доступ к данным. Но я просто догадываюсь здесь.

Ответы [ 6 ]

15 голосов
/ 21 июля 2010

Почему не SQL? Ответ тот же, хотя внутренние детали будут различаться в разных реализациях.

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

Простой (и, вероятно, неоптимальный) индекс может быть построен с помощью обычного бинарного дерева поиска.

5 голосов
/ 21 июля 2010

Да, индексы предназначены для повышения производительности доступа к данным (но за счет хранения) http://en.wikipedia.org/wiki/Index_(database)

3 голосов
/ 21 июля 2010

Подумайте о адресной книге. Если вы ищете номер телефона Росси Марио, вы знаете, что фамилии упорядочены по алфавиту, поэтому вы можете перейти к букве R, затем найти букву o и так далее. Индекс делает то же самое, представляет собой набор ссылок на записи, которые значительно ускоряют некоторые операции.

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

3 голосов
/ 21 июля 2010

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

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

2 голосов
/ 23 июля 2010

Я думаю, что это позволяет сортировать по возрастанию и убыванию и быстрее получать доступ к данным.

Да, вот для чего.Индексы создают абстракцию сортировки данных, что значительно ускоряет поиск.С индексом, использующим сбалансированное двоичное дерево поиска, поиск занимает O (log N) вместо O (N) времени.

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

Просмотрите вашу базу данных SQLite.Эти sqlite_autoindex_ индексы были созданы для обеспечения выполнения УНИКАЛЬНЫХ ограничений.

1 голос
/ 21 июля 2010

То же, что индекс в любой СУБД SQL (YES SQL).

Вы можете видеть, что оптимизатор запросов SQLite рассматривает индексы: http://www.sqlite.org/optoverview.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...