Подтвердить что ты не робот

Есть ли недостаток в добавлении многочисленных индексов к таблицам?

Я создаю новую БД и задавался вопросом, есть ли недостаток в добавлении многочисленных индексов к таблицам, которые, я думаю, могут потребовать их.

Если я создаю индекс, но не использую его, это вызовет какие-либо проблемы?

4b9b3361

Ответ 1

Индексы ускоряют поиск таблиц, но больше времени на запись. Неиспользованные индексы закончится, что приведет к некоторому ненужному замедлению.

Ответ 2

Каждый индекс:

  • Принимает какое-то место на диске и в оперативной памяти.
  • Требуется некоторое время для обновления, каждый раз, когда вы вставляете/обновляете/удаляете строку

Это означает, что вы должны определять индексы, которые полезны для ваших приложений: слишком много индексов замедляют записи больше, чем вы получите от чтения.

Ответ 3

Да. Вы должны добавлять только те индексы, которые необходимы.

Индекс требует дополнительного пространства, и при вставке/обновлении/удалении записей СУБД также необходимо обновить эти индексы. Таким образом, это означает, что для обновления/добавления/удаления записи требуется больше времени, поскольку СУБД должно выполнить некоторое дополнительное администрирование.

добавление многочисленных индексов в таблицы, которые Я думаю, может потребоваться один.

Вы должны добавлять только те индексы, для которых вы уверены, что они необходимы. Чтобы определить столбцы, на которые вы могли бы поместить индексы, вы можете:

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

Другой - и, возможно, лучший подход - использовать SQL Profiler:

  • используйте SQL Profiler для отслеживания ваших приложение/база данных на время
  • сохранить результаты трассировки
  • используйте результаты трассировки в мастере настройки индексов, которые расскажут вам, какие индексы вы должны создать, какие столбцы должны быть в каждом индексе, а также укажет порядок этих столбцов для индекса.

Ответ 4

Индексы приводят к увеличению размера базы данных и времени для вставки/обновления/удаления записей. Старайтесь не добавлять их, если не знаете, что будете использовать их.

Ответ 5

Наличие индекса означает, что INSERT и UPDATE занимают немного больше времени. Если у вас слишком много индексов, тогда преимущество более быстрого поиска может стать нецелесообразным дополнительным временем INSERT и UPDATE.

Ответ 6

Да; с индексом делает выбор быстрее, но потенциально делает вставки медленнее, так как индексы должны обновляться для каждой вставки. Если ваше приложение много пишет и мало читает (например, журнал аудита), вам следует избегать дополнительной индексации.

Ответ 7

  • обновить и вставить стоимость больше, так как индексы также должны быть обновлены
  • больше используемого пространства

Ответ 8

Не создавайте дополнительных индексов в начале. Подождите, пока вы, по крайней мере, частично разработали систему, чтобы иметь представление об использовании таблицы. Создайте планы запросов, чтобы узнать, что запрашивается (и как, и затраты на производительность), и THEN добавляют новые индексы по мере необходимости.

Ответ 9

Не указывайте слепо! Взгляните на свои данные, чтобы увидеть, какие столбцы используются в предикатах SELECT и индексируют их.

Также учтите, что индексы занимают место. Иногда много места. Я видел базы данных, где данные индексирования намного перевешивали необработанные данные в объеме.

Ответ 10

Дополнительное пространство, дополнительное время для вставки, как все сказали.

Кроме того, вы должны быть уверены в своих индексах и вашем дизайне, потому что иногда индексы могут фактически замедлять запросы, если оптимизатор запросов выбирает неправильный индекс. Это необычно, но может произойти, если оптимизировать индекс для конкретного соединения и вызвать другое соединение, чтобы фактически стать медленнее. Я не знаю о SQL Server, но вы найдете много трюков, чтобы намекнуть оптимизатору mySQL для создания запросов в определенных целях, чтобы обойти это.

DBA получает много денег, чтобы узнать о таких странных новостях, как индексы (среди прочего), так что да, есть недостатки для добавления большого количества индексов, поэтому будьте осторожны. Опираясь на ваш профилировщик запросов и не просто бросайте индексы слепо при проблемах.

Ответ 11

Взгляните на столбцы, используемые в ваших предложениях where, посмотрите на столбцы, используемые в объединениях, если они есть. Как правило, это самое простое правило. Посторонние индексы, как указано выше, замедляют ваши заявления DML и обычно не рекомендуются. В идеале, что я сделал, закончить весь модуль и во время фазы тестирования устройства, убедитесь, что вы можете выполнить анализ нагрузки на модуле, а затем проверить, не видны ли вы замедление и проанализированы случаи замедления, добавьте индексы,

Ответ 12

Я думаю, что на это уже был дан ответ, но в основном индексы замедляют вставки/обновления, поскольку индекс обновляется при вставке новой записи (или обновленной версии).

Пространство также рассматривается как память, так и диск.

Таким образом, для баз данных, где происходит большое количество транзакций, это, безусловно, будет иметь заметное влияние на производительность (именно поэтому настройка производительности включает в себя добавление и удаление индексов для оптимизации определенных действий, выполняемых с базой данных).

Удачи.