Что такое индекс в SQLite?

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

Ответы

Ответ 1

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

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

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

Ответ 3

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

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

Ответ 4

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

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

Ответ 5

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

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

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

Взгляните в базу данных SQLite. Эти индексы sqlite_autoindex_ были созданы для обеспечения ограничений UNIQUE.

Ответ 6

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

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