В каких случаях использование индексов в таблицах PostgreSQL может замедлить выполнение запроса?
В нашей команде архитектор настаивает, чтобы все таблицы в базах имели индекс. Оправдано ли это? В каких случаях использование индексов ухудшает производительность и насколько?
Слишком абстрактный вопрос - все зависит от конкретного приложения и объемов данных.
В общем случае - индекс добавляет некоторый оверхед на вставку/обновление данных и на дисковое пространство, что не должно являться определяющим фактором в решении нужен индекс или нет.
Вашему архитектору - передавайте большой привет. Возможно его фраза звучала в контексте. И без этого контекста мы слышим мысль воспроизведенную вами так как вы поняли. Возможно арх. вообще сетовал на то что вы их нигде не создаете. Другое зло вобщемто.
Вадим,
Индексы используются для поиска в столбцах, по которым индекс. Т.е. индексы нужно создавать на столбцы, которые участвуют в WHERE и JOIN. Но лучше смотреть план запроса.
@Alexeytur@ iMedved2009,
конечно имелось ввиду те столбцы, которые учавствуют в WHERE, запроса SELECT. А JOIN требует индексы если испульзуется ON, не WHERE?
Вадим, мы и по английски можем. делов то.
А он вас заставляет композитные индексы создавать или чего еще? А если у вас там поле типа bool вы тоже по нему индекс херачите?