Когда вы пишете SELECT * FROM users WHERE active = true, вы думаете, что PostgreSQL «просто выбирает строки». Но на самом деле запускается сложный конвейер из десятков этапов: парсинг, планирование, оптимизация, выполнение, управление транзакциями, MVCC, буферизация… Понимание этого процесса — ключ к написанию быстрых, предсказуемых и масштабируемых приложений. Особенно если вы используете Spring Data JPA или JDBC в Java 11. Давайте разберёмся по шагам, а затем проанализируем 10 самых частых запросов — как они работают под капотом. Многие думают, что SQL выполняется в порядке написания: SELECT → FROM → WHERE → GROUP BY → HAVING → ORDER BY.
Это неверно. Логический порядок выполнения (тот, который определяет, какие данные доступны на каком этапе): 💡 Это логический порядок. Физически PostgreSQL может выполнять этапы в другом порядке (благодаря оптимизатору), но результат будет эквивалентен этому порядку. Когда вы отправляете запрос через JDBC (или Hibernate), PostgreSQL проходит следующ