У меня есть приложение, которое циклически проходит через огромное количество записей в таблице базы данных и выполняет ряд операций SQL и .Net по записям внутри этой базы данных (в настоящее время я использую Castle.ActiveRecord на PostgreSQL).
Я добавил некоторые базовые индексы btree на пару feilds, и, как и следовало ожидать, производительность SQL-операций значительно увеличилась. Желая максимально использовать производительность dbms, я хочу сделать несколько более обоснованных вариантов того, что я должен индексировать во всех моих проектах.
Я понимаю, что при вставках (как в базе данных необходимо обновить индекс, так же как и данные) существует некорректность производительности, но какие рекомендации и рекомендации следует учитывать при создании индексов базы данных? Как лучше всего выбрать группу feilds/сочетание полей для набора индексов базы данных (эмпирические правила)?
Также, как лучше всего выбрать, какой индекс использовать в качестве кластерного индекса? И когда дело доходит до метода доступа, при каких условиях я должен использовать btree над хешем или gist или джином (что они в любом случае?).