Приступил к работе над проектом, база PostgreSQL 9.4., первая задача обзор и оптимизация запросов, поиск лишних и дублирующих запросов.
Интересует пособие, книга или статья с практическими примерами по оптимизации SQL запросов, какие подводные камни для агрегатных функций типа COUNT на больших таблицах, как правильно создавать сложные индексы по нескольким полям, как читать план выполнения запроса.
Особый момент как работать с таблицами, которые работают как лог, они постоянно растут, выборка по ним все медленнее, а если надо делать JOIN с другими таблицами такой большой таблицы? Можно конечно делать отдельные запросы, а потом сливать в массив, но интересует правильный подход.
Про "особый момент" - избегай выборки всего объема информации из подобных таблиц. Всегда ставь ограничивающие условия. Поля, которые наиболее часто встречаются в условиях, должны быть проиндексированы.
Если выборки всего объема не избежать, то это должны быть какие-то достаточно редкие ситуации.
Собственно, это обычное правило, не только для "особого момента", подойдет и для любых других крупных таблиц.