@Iv_and_S

Нужно ли объединять SQL запросы в один?

Привет.
есть таблица в БД в нее нужно внести три поля, в зависимости от результатов неких действий.
я написал три отдельных запроса в БД.
В данном случае производительность значения не имеет, однако, корректно ли так делать в неком боевом коде/проектах?

Т.е. вопросы:
1. что лучше три отдельных запроса, или запихать все в один ? ( при том что возможно(но не точно) поле parse_data , будет обновляться когда то отдельно).
2. Возможно есть какие то комментарии по коду. (я вероятно не нормально делаю конкатенацию строк?).

# статус выгрузки TRUE
    def set_parse_status_true(self,id_num):
        cursor = self.conn.cursor()
        id_num = str(id_num)
        sql_update = "UPDATE customers SET is_parse = TRUE WHERE id = '" + id_num + "';"
        cursor.execute(sql_update)
        self.conn.commit()
        cursor.close()
    
    # устанавливаем дату выгрузки
    def set_parse_data(self,id_num,parse_data):
        cursor = self.conn.cursor()
        id_num = str(id_num)
        parse_data = str(parse_data)
        sql_update = "UPDATE customers SET parse_data = '" + parse_data + "' WHERE id = '" + id_num + "';"
        cursor.execute(sql_update)
        self.conn.commit()
        cursor.close()

    # прописываем путь до выгрузки
    def set_path_link(self,in_num,path):
        cursor = self.conn.cursor()
        id_num = str(id_num)
        sql_update = "UPDATE customers SET path_link = '" + path + "' WHERE id = '" + id_num + "';"
        cursor.execute(sql_update)
        self.conn.commit()
        cursor.close()
  • Вопрос задан
  • 173 просмотра
Решения вопроса 1
DevMan
@DevMan
в общем:
- боевой код бывает разным: один обрабатывает 100 запросов в час, другой - 1000 запросов в минуту/секунду.
- запросы тоже бывают разными, и выполняются по-разному; иногда объединение в один может дать профит, иногда нет.

конкретно: вы апдейтите одну и ту же таблицу (в одном потоке, если я правильно понял), имеет смысл это делать за один запрос. подготовку данных можно раскидать по разным функциям, но запрос оптимальнее делать один. если потом вам надо будет отдельно проапдейтить какое-то поле, ну проапдейтите его, это уже будет другой функционал.
оптимальнее не с точки зрения производительности (частично и с ней), а с точки зрения связанности кода: представьте что вам нужно будет поменять название таблицы с customers , на clients - проще это сделать в одной функции или в нескольких?

преждевременная оптимизация - зло. рефакторинг - неизбежный спутник программиста (если он не "херак, херак - и в продакшен").
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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