Что такое индекс?
Индекс — это структура данных, содержащая копию столбца (или столбцов, подробнее об этом позже) из таблицы базы данных, которая упорядочена для увеличения скорости операций извлечения из базы данных исходного столбца в таблице. Индекс также содержит «ключ» для каждой скопированной строки, указывающий на исходную строку данных в столбце таблицы. Индекс создается за счет дополнительных операций записи и места для хранения.
========================
Как индексы повышают производительность
========================
Если мы подумаем об обычном поиске записи в базе данных в несортированном столбце, временная сложность Big-0 будет линейной или 0 (n). Это связано с тем, что наш наихудший сценарий заключается в том, что нам нужно искать в каждой строке, и для каждой добавляемой строки время поиска в наихудшем случае увеличивается линейно.
Когда создается индекс и отсортированный столбец создается из несортированного столбца, наше время поиска уменьшается до наихудшего случая 0 (log (n)). Это связано с тем, что индексы реляционных баз данных структурированы как сбалансированные деревья или B-деревья. Точные тонкости структуры B-дерева зависят от базы данных (PostgreSQL, MySQL, SQLite). Ключевым выводом здесь является понимание того, что мы в основном можем выполнять поиск в столбце с временной сложностью Big-0, равной 0 (log (n)), а не 0 (n), что повысит производительность.
==========================
Когда следует использовать индекс?
UPDATE,INSERT,DELETE иногда перестраивают индексные простанства размером до нескольких террабайт. Любая финансовая система или система движения товаров так или иначе потребуют серьезных аппаратных ресурсов.
Чем выше частота транзакций в базе данных тем интенсивней перестраиваются индексные пространства, ошибки Сервера приводят к тому, что скорость поиска по индексу может стать неприемлемой. Реорганизация больших таблиц требует блокировки базы в моно-режиме, а от Вас она требует знание например такой утилиты Informix as High Performancе Loader и некоторых других о которых юзеры просто ничего не знают. Реорганизация VLDB отправила гулять по улице многих DBAs. Установка не есть проблема, проблема есть сопровождение и восстановление после крушения Сервера.
Понимание как и где создавать Index Detached Dbspaces может оказаться критичным для DBA. Опыт и понимание стратегии навигации Сервера БД в индексных пространствах - очень важные навыки, которые без опыта получить неоткуда. Стратегии эти свои для каждого сервера.
==========================
MySQL использует индексы для быстрого поиска строк с определенными значениями столбцов. Без индекса MySQL должен сканировать всю таблицу, чтобы найти соответствующие строки. Чем больше таблица, тем медленнее поиск.
В этом разделе вы узнаете об индексе MySQL, включая создание индексов, удаление индексов, список всех индексов таблицы и другие важные функции индексов в MySQL.
Создание индексов — знакомит с концепцией индекса и показывает, как создать индекс для одного или нескольких столбцов таблицы.
Удаление индексов — показывает, как удалить существующий индекс таблицы.
Список индексов таблиц — предоставляет оператор для вывода списка всех индексов или конкретных индексов таблицы.
Уникальные индексы — использует уникальные индексы, чтобы обеспечить хранение различных значений в столбце.
Префиксные индексы — показывает, как использовать префиксный индекс для создания индекса для столбца строки символов.
Невидимые индексы — охватывает видимость индекса и показывает, как сделать индекс видимым или невидимым.
Индексы по убыванию — показывает, как использовать индексы по убыванию для повышения производительности запросов.
Составные индексы — иллюстрирует применение составных индексов и показывает, когда их использовать для ускорения запросов.
Кластерные индексы — объясняет кластерные индексы в таблицах InnoDB.
Количество элементов индекса — объясняет количество элементов индекса и показывает, как его просмотреть с помощью команды show indexes.
Подсказка USE INDEX — показывает, как использовать подсказку USE INDEX, чтобы указать оптимизатору запросов использовать единственный список указанных индексов для поиска строк в таблице.
Подсказка FORCE INDEX — показывает, как использовать подсказку FORCE INDEX, чтобы заставить оптимизатор запросов использовать указанные индексы для выбора данных из таблицы.