Если у меня есть большой стол с:Каков правильный способ индексирования таблицы postgres при выполнении запроса с двумя полями?
varchar foo
integer foo_id
integer other_id
varchar other_field
И я мог бы делать запросы, как:
select * from table where other_id=x
очевидно, мне нужен индекс other_id, чтобы избежать сканирования таблицы.
Если я и делаю:
select * from table where other_id=x and other_field='y'
Хочу ли я еще один индекс на other_field или что отходы, если я никогда не делать:
select * from table where other_field='y'
т.е. я использую только other_field с other_id вместе в запросе.
Будет ли улучшен составной индекс как [other_id, other_field]? Или это вызовет сканирование таблицы для первого простого запроса?
спасибо, это очень помогло. Я буду отмечать этот ответ лучше всего, когда SO позволяет мне. –
В значительной степени переписан ответ. Были некоторые ошибки :). –
вы все равно выигрываете :) –