MySQL: индекс для столбца без первичного ключа

0

Можно ли использовать столбец, отличный от первичного ключа, как индекс, и есть ли какие-либо недостатки для этого?

Теги:

3 ответа

2

Совершенно верно. Это помогает с SELECT ... WHERE, где условие не является вашим основным ключом. Однако будьте осторожны, не индексируйте слишком много - укажите только то, что вам нужно.

  • 0
    сильно ли снижается производительность при использовании нескольких индексов? И я имею в виду не один индекс, состоящий из нескольких столбцов, а несколько индексов, каждый из которых состоит из одного столбца.
2

Многие мои таблицы имеют вторичные индексы помимо первичного ключа. Вы можете создать несколько индексов для каждой таблицы, но в MySQL для каждого запроса в одном запросе используется только один индекс.

Какие индексы вы должны создать? Это зависит от ваших запросов. См. Презентацию, которую я сделал на этой неделе, MENTOR Ваши индексы.

Добавление дополнительных индексов добавляется постепенно к накладным расходам при вставке/обновлении/удалении. Когда вы меняете данные, РСУБД должна поддерживать индексы синхронно. Но почти всегда верно, что правильные индексы дают вашим избранным запросам так много преимуществ, что они более чем оправдывают накладные расходы на их поддержание.


существует ли большая часть производительности с использованием нескольких индексов?

В книге "Искусство SQL" автор протестировал это и обнаружил, что при увеличении количества индексов увеличивается более высокая производительность. Но, что интересно, оно не растет линейно. Дополнительные накладные расходы второго, третьего и т.д. Индексов снижаются в грубой логарифмической кривой. То есть два индекса не в два раза дороже одного индекса. Четыре индекса не в два раза дороже двух индексов.

1

Вы можете пойти на альтернативу, как когда-либо есть

Преимущества индексов MySQL Вообще говоря, индексирование MySQL в базу данных дает вам три преимущества:

  • Оптимизация запросов: индексы делают запросы поиска намного быстрее.
  • Уникальность: индексы, такие как индекс первичного ключа и уникальный индекс, помогают избежать дублирования данных строки.
  • Текстовый поиск: полнотекстовые индексы в MySQL версии 3.23.23, пользователи имеют возможность оптимизировать поиск даже больших объемов текста, расположенных в любом поле, индексированном как таковое.

Недостатки индексов MySQL Когда индекс создается в столбце (столбцах), MySQL также создает отдельный файл, который сортируется, и содержит только поле (ы), которое вы заинтересованы в сортировке.

  • Во-первых, индексы занимают дисковое пространство. Обычно использование пространства не является значительным, но из-за создания индекса для каждого столбца в каждой возможной комбинации индексный файл будет расти намного быстрее, чем файл данных. В случае, когда таблица имеет большой размер таблицы, индексный файл может достигать максимального размера файлов операционной системы.

  • Во-вторых, индексы замедляют скорость написания запросов, таких как INSERT, UPDATE и DELETE. Поскольку MySQL должен внутренне поддерживать "указатели" на вставленные строки в фактическом файле данных, поэтому в случае вышеуказанных запросов записи есть цена исполнения, потому что каждый раз, когда изменяется запись, индексы должны обновляться. Тем не менее, вы можете написать свои запросы таким образом, чтобы не приводить к очень заметному ухудшению производительности.

  • 0
    О чем ты говоришь? Индексирование по другим столбцам имеет большое значение.
  • 0
    @daniel "Вы можете пойти на альтернативу", это не имеет большого значения, но это также зависит от требования? проверьте обновление один раз.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню