2013-04-08 5 views
1

Я часто слышал, что индексы могут значительно повысить производительность, но иногда они могут снизить производительность.Как индексы ухудшают производительность MySQL?

Помимо использования памяти, как они могут снизить производительность?

Если я хочу оптимизировать время записи в заданной таблице, но не заботятся о времени чтения, я бы лучше не использовал индексы (кроме ПК)?

+0

Просто попробуйте добавить несколько сотен индексов в таблицу и измерить производительность записи - до и после добавления индексов. –

ответ

4

Writes and Updates должны создавать или изменять индексированные значения. Поэтому они могут быть медленнее, когда на столе много индексов. Если вы действительно не заботитесь о времени на чтение, не используйте индексы.

Однако хорошие индексы значительно улучшат производительность чтения, но только незначительно ухудшают производительность записи, поэтому делайте это только в том случае, если действительно читаете, на самом деле это не имеет значения.

+0

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

3

Правильно - если все, о чем вы заботитесь, пишет, вам не следует использовать индексы. Любой индекс замедлит ваши записи.

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

+0

Спасибо, Джефф, Это то, чего я ожидал, но не знал наверняка. – user1032531

Смежные вопросы