Индексы
Основные тезисы:
1) Индексы ускоряют выборку данных из таблицы, но замедляют вставку и редактирование (если изменяются столбцы задействованные хотя бы в одном индексе).
2) При создании индексов стоит учитывать:
2.1) Как часто с данной таблицей будут производиться операции чтения/записи.
2.2) Какие конкретно запросы будут выполняться. (по каким полям будет идти поиск, соединение, группировка, сортировка: WHERE, JOIN)
2.3) Предполагаемые размеры таблицы.
Критерий - кластеризованный индекс
Кластеризованный индекс
Данный индекс определяет порядок строк в таблице.
При вставке новой записи в таблицу рассчитывается значение кластеризованного индекса для новой строки, на основе которого выполняется вставка в имеющийся набор строк.
Для таблицы может быть только 1 кластеризованный индекс. Обычно совпадает с первичным ключом. Также в таблице может отсутствовать кластеризованного индекса (строки будут расположены в порядке их добавления).
Некластеризованный индекс
Не влияет на физический порядок строк. Используется для оптимизации выборки данных.
Вопросы
1) Оценка состояния индексов. Поддержка индексов в актуальном состоянии.
Критерии состояния индекса (фрагментация).
Действия по обслуживанию индекса (перестроение, пересоздание).
Ссылки:
MSSQL | 14 вопросов об индексах в SQL Server, которые вы стеснялись задать https://habr.com/ru/post/247373/ | |
Основы индексов в Microsoft SQL Server https://info-comp.ru/programmirovanie/575-index-basics-in-ms-sql-server.html | ||
Обслуживание индексов и статистик MS SQL Server https://infostart.ru/public/256292/ | ||
PostgreSQL | Неожиданная находка, которая освобождает 20 GB неиспользованного индексного пространства [Postgres] https://habr.com/ru/company/otus/blog/672102/ | |
Postgres Professional | Индексы в PostgreSQL — 1 https://habr.com/ru/company/postgrespro/blog/326096/ | |
Индексы в PostgreSQL — 2 https://habr.com/ru/company/postgrespro/blog/326106/ | ||