Подготовленные запросы или подготовленные процедуры?

В классах прописаны тривиальные методы выборки данных материалов из БД, например:

protected function getUserByLogin($login)
 {
        $stmt = $this->db->prepare('SELECT users.id, users.login, users.email, users.password_hash,
                                    users.group_id, user_groups.name as group_name, users.has_avatar,
                                    users.active FROM users, user_groups
                                    WHERE users.login=? AND user_groups.id = users.group_id');
        $stmt->execute([$login]);
        
        if ($result = $stmt->fetch()) {
            return new User($result);
        }
        
        return false;
}


Вопрос - стоит ли прописать запрос в хранимую процедуру MySQL, а в PHP запрашивать данные просто через CALL? И у PDO вроде есть функционал для работы с хранимыми процедурами.

Будут ли от этого какие-то преимущества?
  • Вопрос задан
  • 563 просмотра
Решения вопроса 1
Имеет смысл переносить в хранимки только запросы, которые требуют какой-то циклической обработки результатов с последующим изменением в БД или циклическими подзапросами.
Например, UPDATE по результатам SELECT со сложной логикой, которые невозможно реализовать одним запросом.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
FanatPHP
@FanatPHP
Чебуратор тега РНР
Нет, преимуществ не будет, а вот неудобства значительные. Чтобы поменять запрос или просто посмотреть его логику, придется лезть в бд, что очень неудобно.

Да и старик Оккам не одобряет.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы