Если бы только жизнь была такой простой, ответ, как всегда, есть; это зависит.
Представьте, что ваш стол - ваша собственная "маленькая черная книга" людей, которые вам нравятся. На каждой странице есть разные люди name
, address
, date of birth
и т. Д. (Книга = Таблица, Страница = Запись)
Теперь вы хотите, чтобы каждый человек находился там один раз, основываясь на его имени и фамилии (уникальный ключ, возможно, первичный ключ). Но вы также хотите, чтобы они были там в порядке, чтобы их было легко найти. Вы решаете упорядочить их по фамилии, а для людей с такой же фамилией упорядочить их по имени (Clustered Indexed, физический порядок, в котором они хранятся, преимущества Выбор данных)
Теперь с помощью этого кластерного индекса вы можете очень быстро найти своих друзей в своей книге. Но если вы добавляете нового человека, вы не можете просто добавить его в конец, вы должны найти правильное место в книге, чтобы вставить его. (Вставить заголовок индекса)
Если они случайно меняют свое имя (например, вступают в брак), вы должны найти их, изменить имя и переместить их в другое место в книге. К счастью, индекс действительно облегчил их поиск; переносить их на новое место в книге - боль, но не в два раза хуже, чем пытаться найти их в случайно упорядоченной книге. (Обновление заголовка индекса)
В конце концов, наступает день, когда вы понимаете, что вы ужасно помните дни рождения. Итак, вы переходите к своей маленькой задней книге. К сожалению, они упорядочены по именам, а не по датам рождения; выяснить, у кого день рождения, настоящая боль! Таким образом, вы создаете небольшой указатель сзади; упорядоченный список дней рождения и имя каждого человека, рожденного в этот день. (Вторичный индекс, выбор пособий на основе даты рождения)
Если вы найдете кого-то, у кого дата рождения, вы ошиблись, однако вам придется что-то изменить; DoB на их странице и положение в индексе DoB. Аналогично, когда вы добавляете нового человека в книгу, вы должны найти правильную страницу, чтобы вставить его, а также правильное место в индексе DoB, чтобы добавить его имя. (Обновить и вставить накладные расходы)
К счастью, обновление их адреса не является проблемой. Просто найдите их, измените адрес, и все готово. Пока не настанет день, когда вы создадите и индекс адресов ...
Короче ...
1. Индекс может помочь определенным видам Выберите производительность
2. Всегда добавляет стоимость вставки
3. Это может ускорить поиск записи для обновления
4. Но также можно добавить накладные расходы на обновления в индексированных полях
Сделки и остатки ваших индексов зависят от того, как вы используете данные. Много вставок и обновлений? Много Выбирает? Множество различных Выбирает индексы, гарантирующие кратные и т. Д.?
Вы можете делать все это с помощью науки, но на практике это похоже на искусство.