Содержание книги "Оптимизация запросов в PostgreSQL
:
полное руководство по созданию эффективных запросов"
От издательства
Об авторах
О техническом редакторе
Благодарности
Вступление
Глава 1. Зачем нужна оптимизация?
Что подразумевается под оптимизацией?
Императивный и декларативный подходы: почему это сложно
Цели оптимизации
Оптимизация процессов
Особенности PostgreSQL
Выводы
Глава 2. Теория: да, она нужна нам!
Обзор обработки запросов
Реляционные, логические и физические операции
Выводы
Глава 3. Еще больше теории: алгоритмы
Стоимостные модели алгоритмов
Алгоритмы доступа к данным
Индексные структуры
Сочетание отношений
Выводы
Глава 4. Планы выполнения
Собираем все вместе: как оптимизатор создает план выполнения
Чтение планов выполнения
Планы выполнения
Выводы
Глава 5. Короткие запросы и индексы
Какие запросы считаются короткими?
Выбор критериев фильтрации
Индексы и неравенства
Индексы и оператор like
Использование нескольких индексов
Составные индексы
Избыточные критерии отбора
Частичные индексы
Индексы и порядок соединений
Когда индексы не используются
Не мешайте PostgreSQL делать свое дело
Как создать правильные индексы?
Индексы и масштабируемость коротких запросов
Выводы
Глава 6. Длинные запросы и полное сканирование
Какие запросы считаются длинными?
Длинные запросы и полное сканирование
Длинные запросы и соединения хешированием
Длинные запросы и порядок соединений
Группировка: сначала фильтруем, затем группируем
Группировка: сначала группируем, затем выбираем
Использование операций над множествами
Избегаем многократного сканирования
Выводы
Глава 7. Длинные запросы: дополнительные приемы
Структурирование запросов
Временные таблицы и общие табличные выражения
Представления: использовать или не использовать
Материализованные представления
Секционирование
Параллелизм
Выводы
Глава 8. Оптимизация модификации данных
Что такое DML?
Два способа оптимизации модификации данных
Как работает DML?
Модификация данных и индексы
Массовые обновления и частые обновления
Ссылочная целостность и триггеры
Выводы
Глава 9. Проектирование имеет значение
Проектирование имеет значение
Зачем использовать реляционную модель?
Гибкость против эффективности и корректности
Нужна ли нормализация?
Правильное и неправильное использование суррогатных ключей
Выводы
Глава 10. Разработка приложений и производительность
Время отклика имеет значение
Всемирное ожидание
Показатели производительности
Потеря соответствия
Дорога, вымощенная благими намерениями
В поисках более подходящего решения
Выводы
Глава 11. Функции
Создание функций
Выполнение функций
Как происходит выполнение функций
Функции и производительность
Функции и пользовательские типы
Использование составных типов с вложенной структурой
Функции и зависимости типов
Управление данными с помощью функций
Функции и безопасность
Как насчет бизнес-логики?
Функции в системах OLAP
Хранимые процедуры
Выводы
Глава 12. Динамический SQL
Что такое динамический SQL
Как использовать динамический SQL в OLTP-системах
Как использовать динамический SQL в системах OLAP
Использование динамического SQL для гибкости
Использование динамического SQL в помощь оптимизатору
Обертки сторонних данных и динамический SQL
Выводы
Глава 13. Как избежать подводных камней объектно-реляционного отображения
Почему разработчикам приложений нравится NORM
Сравнение ORM и NORM
Как работает NORM
Детали реализации
Сложный поиск
Обновления
Почему бы не хранить JSON?
Прирост производительности
Совместная работа с разработчиками приложений
Выводы
Глава 14. Более сложная фильтрация и поиск
Полнотекстовый поиск
Многомерный и пространственный поиск
Обобщенные типы индексов PostgreSQL
Индексы GiST
Выводы
Глава 15. Полный и окончательный алгоритм оптимизации
Основные шаги
Пошаговое руководство
Но подождите, это еще не все!
Выводы
Заключение
Предметный указатель