Ответ
Отладка SQL строится на анализе самого запроса и его плана выполнения:
-
Логирование запросов — в Laravel это делается через метод
->dd()у построителя запросов или глобально включением лога вconfig/database.php. В чистом PDO логирую запросы и параметры:$sql = "SELECT * FROM users WHERE email = :email"; $params = ['email' => $email]; // Логирую перед выполнением error_log("Executing SQL: $sql with " . json_encode($params)); $stmt = $pdo->prepare($sql); $stmt->execute($params); -
Анализ плана выполнения с
EXPLAIN— это первый шаг при работе с медленным запросом. Показывает, какие индексы используются, тип соединения и приблизительное количество обрабатываемых строк.EXPLAIN SELECT * FROM orders WHERE user_id = 123 AND status = 'completed'; -
Использование
SHOW PROCESSLIST— для выявления "висящих" или долгих запросов непосредственно на сервере БД. -
Инструменты администрирования БД — MySQL Workbench или Adminer для визуального анализа, построения диаграмм и профилирования.
-
Панели отладки фреймворков — Laravel Telescope или Clockwork дают детальную информацию о времени выполнения, количестве запросов и их "узких местах" прямо в браузере.