@vostotskiy

Повлияет ли индекс на быстродействие БД при вставке и обновлении?

Здравствуйте. Имеется таблица с платежами, в которой одно из полей имеет несколько значений (статус) . в текущий момент времени поле реализовано как строка varchar20 (правильнее стоило бы использовать char20, так как статусы имеют примерно одинаковую длину), их количество-около 10. По этому параметру джоинятся таблицы, проводятся рассчеты разнообразные. В данный момент нет никаких тормозов. В будущем кол-во записей будет расти. Стоит ли заводить для данного поля индекс и какие отрицательные последствия могут поджидать? Например, скорость обновления или вставки платежей.
Заранее спасибо.
ps. Посоветуйте литературу по оптимизации БД.
  • Вопрос задан
  • 265 просмотров
Пригласить эксперта
Ответы на вопрос 1
@D3lphi
Безусловно, индекс будет тормозить запросы на вставку, удаление. Ибо, во время этой процедуры индекс нужно изменить. То есть, вы удаляете элемент из середины таблицы, следовательно СУБД будет должна обновить индексы таблицы. На большой таблице при частых запросов этих типов вы будете получать просадку в скорости. На запросах с выборкой использование индексов дает большое преимущество в скорости. Из этого небольшого рассуждения можно понять, что все зависит от того, какой тип операций преобладает над этой таблицей.

И еще, позвольте поинтересоваться, для чего поле "статус" реализовывать в виде строки? Не логичнее ли было сделать, например, smallint? Определенное число соответствовало бы определенному статусу. Работа с числовыми полями, а уж тем более, если по ним стоит индекс происходит на порядок (нет, на два порядка) быстрее. Да и места на диске будет сэкономлено.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы