Курс по базам данных. Плюсы и минусы использования индексов в SQL и реляционных базах данных.
Помощь проекту:
WMR: R288272666982
WMZ: Z293550531456
Яндекс.Деньги: 410011531129223
Рубрика SQLite на сайте: http://zametkinapolyah.ru/zametki-o-mysql/sqlite/
Текстовая версия: http://zametkinapolyah.ru/zame....tki-o-mysql/chast-11
Паблик блога в ВК: https://vk.com/zametkinapolyah
Тематическая группа в ВК: https://vk.com/zametki_bd
-- Зачем нужны индексы?
/*
Для начала скажем, что SQL индексы являются объектами базы данных, как, например, таблица или представление, а это
означает, что имя индекса должно быть уникальным.
Типичным примером индекса в базе данных является первичный ключ (столбец PEIMARY KEY).
Поскольки SQL индекс - это объект базы данных, то к нему можно применять некоторые SQL команды, например,
мы можем создавать и удалять индексы.
В базах данных SQLite к индексам нельзя применить команды манипуляции данными,
хотя мы с легкостью можем применять эти команды к таблицам, столбцы которых являются индексами.
Основное назначение индексов в базе данных заключается в том, чтобы ускорить операцию выборки данных из базы данных.
Индексы очень ускоряют выполнения команд SELECT за счет того,
что реализованы они, на самом деле, при помощи быстрого алгоритма поиска информации,
одним из самых популярных таких алгоритмов является алгортим Б-дерева, но об этом мы
поговорим несколько позже. Но, поскольку индексы ускоряют выборку, вернее потому,
но, если где-то что-то прибыло, то обязательно где-то что-то убудет, в природе по-другому не бывает,
индексы ускоряя выборку данных, замедляют следующие SQL операции:
- добавление строк в таблицы;
- удаление данных из таблиц;
- и модификацию данных.
Если алгоритм индексов реализован в виде B-tree (чаще все именно этот алгоритм), то замеделние других
операций манипуляции данными происходит из-за того, что данный алгоритм требует, чтобы данные были
упорядочены, а само дерево сбалансированным, поэтому СУБД при выполнении этих операций приходится
поддерживать дерево в актуальном/сбалансированном состояние, а на это требуются вычислительные мощности.
Если говорить просто, то при создании индекса мы создаем еще одну таблицу, в которой хранятся значения
индексируемого столбца в упорядоченном виде и при этом СУБД вместо того, чтобы перебирать данные в исходной
таблице, пользуются таблицей индексов, в которой хранятся ссылки на исходные таблицы, за счет этого происходит
уменьшение количества операций по перебору и сравнению значений с искомым.
*/