TGViewer
Пятиминутка PHP Пятиминутка PHP @tg_5minphp · 2.8K subscribers
Post #1433 2.25K
Смотрю очередной выпуск подкаста «Организованное программирование» на тему «ORM vs SQL». Внезапно участник рассказал об автоматизированном тестировании SQL-запросов через EXPLAIN.

Ссылка с таймокодом: https://youtu.be/O1Qxpvt7WCw?si=Rbs_vt3CTB7BunRD&t=1147

Удивительно, что я какое-то время назад независимо пришёл к идентичному решению!

Суть подхода:
В проекте много отчётов на чистом SQL (без ORM/query builder). В тестовом окружении все они запускаются с подстановкой EXPLAIN перед SELECT.

Это даёт:
- Мгновенное выполнение в тестах (даже для сложных запросов);
- Проверку синтаксиса, наличия полей и таблиц;
- Нулевую стоимость написания теста (новые отчёты подключаются автоматически).

Надо понимать, что это смоук-тест: он не проверяет данные, но гарантирует запуск отчёта.

Позже метод был адаптирован для других модулей. Например, для CRUD-таблиц с сортировкой по колонкам.
Автотест запускает EXPLAIN SELECT ... ORDER BY [каждая_колонка];
Ловит ошибки в сложных вычисляемых полях с подзапросами (реальные кейсы были!).
Теперь всё покрыто EXPLAIN-тестами без ручного написания. Добавил колонку в CRUD? Движок тестирования сам запустит сортировку.

p.s. до этого использовалась другая менее эффективная идея: всем SELECT запросам добавлялся LIMIT 1 для смоук-тестов.
YouTube ORM vs SQL — Дебаты: что побеждает в реальных проектах? Александр Вершилов #50 В этом выпуске мы поговорили с Александром Вершиловым — разработчиком с 15-летним опытом и руководителем отдела разработки в Сириус.Курсах. Мы устроили дебаты про ORM. Обсудили чем ORM отличается от query-builder’а, разобрали типичные проблемы N+1 и ленивых…
  • 🔥 24
  • ❤ 5
  • 👍 2
More from @tg_5minphp
  1. Sep 28, 2026Запустили Пыхник и неделю PHP! Залетайте на первый открытый доклад от Дмитрия Dantes про к…
  2. Sep 10, 2026Пыхник’26 — целая неделя PHP! С 28 сентября по 2 октября пройдёт Пыхник’26 — онлайн-конфер…
  3. Jul 27, 2026Работа с Claude Code "в лоб": создай dynamic worflow, чтобы найти все баги, запиши их в BU…
  4. Jul 8, 2026Первый официальный State of PHP опрос открыт: https://jb.gg/php-survey-2026 В сообществе у…
  5. Jul 3, 2026Запустили краудфандинг!!! 11 сентября в Art Village под Москвой собираем небольшую PHP-кон…
  6. Jul 3, 2026Продано!
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →