• Как оптимизировать запрос через Sqlalchemy?

    @WishesFire Автор вопроса
    Akina,

    project_queries = []
            for project_id in filter_body.prj_ids:
                project_query = query.filter(CashlessCard.company_id == project_id)
                project_queries.append(project_query)
            final_query = union(*project_queries)


    задумка такая?
    Написано
  • Как оптимизировать запрос через Sqlalchemy?

    @WishesFire Автор вопроса
    Akina,

    Меня больше интересует использование union, список фильтрации большой, как это лучше сделать?
    там просто список id, [1, 2, 3, ...]
    Написано
  • Как оптимизировать запрос через Sqlalchemy?

    @WishesFire Автор вопроса
    id это первичный ключ. индексы есть до этих полей

    C offset это лучшее решение, чем вытаскивать все записи за один запрос
    Написано
  • Как оптимизировать запрос через Sqlalchemy?

    @WishesFire Автор вопроса
    chemdev,

    я имел в виду что у самих табличек через orm, нет
    relationship('A', foreign_keys=[a_id], primaryjoin='A.id == B.currency_id'), вместо этого есть только поле Integer, в котором записана id.

    удобно валидировать данные как дефолтное значение - Значение может прийти null с какого-то поля, и вместо того, чтобы его показывать, используется coalesce, чтобы показать пустую стрингу
    Написано
  • Как оптимизировать запрос через Sqlalchemy?

    @WishesFire Автор вопроса
    chemdev,

    Может coalesce оказывать влияние на производительность? Сделано оно для этого, чтобы удобно валидировать данные как дефолтное значение. Фильтр по сути с главной таблицы идет, от которой join идет. По структуре есть все эти поля. У них нет relationship, только id. Меня интересует ли использование orm relationship как ForeignKey, даст больше производительность?

    Запрос:

    'SELECT coalesce(A.id, :coalesce_1) AS card_id, coalesce(A.serial_number, :coalesce_2) AS card_number, coalesce(B.name, :coalesce_3) AS prj_name, coalesce(C.name, :coalesce_4) AS client_name, coalesce(A.user_name, :coalesce_5) AS card_owner_name, coalesce(A.user_phone_number, :coalesce_6) AS card_owner_phone_number, coalesce(A.balance_current, :coalesce_7) AS current_balance, coalesce(A.balance_bonus, :coalesce_8) AS bonus_balance, coalesce(A.active, :coalesce_9) AS card_status, coalesce(D.name, :coalesce_10) AS tariff_plan_name, NULL AS anon_1 \nFROM cashless_card JOIN company ON cashless_card.company_id = company.id JOIN voc ON cashless_card.voc_id = voc.id LEFT OUTER JOIN tariff_plan ON cashless_card.tariff_plan = tariff_plan.id WHERE cashless_card.company_id IN (__[POSTCOMPILE_company_id_1])'
    Написано
  • Не могу создать миграцию.FLASK + Postgresql + SQLAlchemy. Что я делаю не так?

    @WishesFire Автор вопроса
    я это убрал, ничего не изменилось(