Коллеги, добрый день. Начинаю изучать мир sql
Добрался до такой структуры, как "индекс".
Верно ли я понял, что:
1. В любой таблице есть всегда первичный индекс (ключ), который обычно создают руками при создании таблицы и вешают на ID, в противном - субд сама создаст индекс в какой-то скрытой колонке
1.1 Следовательно, этот индекс нужен бд для выполнения любых запросов
2. Индексы по умолчанию - хранят только ссылки на записи в таблице. При запросе - сначала индекс отдает список записей, потом происходит чтение значения из каждой записи
2.1. Можно создать кластерные индексы, которые хранят сразу значение - можете пояснить, почему тогда не создавать сразу все индексы кластерные, чтобы избежать дополнительного чтения?
3. Как я понял, при любом обновлении таблицы, индексы таблицы формируются заново
3.1 Что будет, если сделать селект сразу после обновления записи в одной и той же таблице ? Имею ввиду, если индекс не успел за этой время обновиться
4. На собесе был вопрос - в каких случаях индексы могут замедлить выполнение запроса - прошу совета что почитать на данную тему
5. Почему не будет работать вариант с "создать индекс на каждую колонку" ?