SqlAlchemy查询花费很长时间

时间:2020-05-18 23:23:01

标签: python oracle api sqlalchemy flask-sqlalchemy

我正在连接到Oracle数据库。

此表与其他2个表相关。

主表的类模型:

class EventModel(db.Model):
    """
    Model for the Generic Calendar RC_CAL table
    Has all assumed methods for getting, inserting, updating, and deleting data needed for anything involving this table
    JSON creator method
    """
    __tablename__ = 'RC_CAL'

    RC_ID = db.Column(db.Integer, primary_key=True)
    PRODUCT_ID = db.Column(db.Integer)
    RELEASE_ID = db.Column(db.Integer)
    RCPM_ID = db.Column(db.Integer)
    FIT_DTTM = db.Column(db.String(25))
    DATACTR_ID = db.Column(db.String(10))
    COMMENT_TXT = db.Column(db.String(500))
    DESCR_TXT = db.Column(db.String(300))
    EVENTCMPLT_FLG = db.Column(db.String(1))
    EVENTCMPLTONTM_FLG = db.Column(db.String(1))
    URLS = db.Column(db.String(4000))
    CREATE_DT = db.Column(db.DateTime)
    MODIFIED_DT = db.Column(db.DateTime)
    generic_event = db.relationship(
        "GenericEventModel",
        back_populates='rc_event',
        lazy='joined',
        cascade="all, delete, delete-orphan"
    )
    history_list = db.relationship(
        "HistoryModel",
        back_populates='rc_event',
        lazy='joined',
        cascade="all, delete, delete-orphan"
    )

    @classmethod
    def find_by_active_type(cls, is_active):
        return cls.query.join(GenericEventModel).filter(GenericEventModel.ACTIVE_YN == is_active)

class方法是我尝试调用的方法。查询非常简单,但是由于某种原因,api获取数据需要14到15秒钟。

如果我这样做:

return cls.query.all()

总共大约需要5秒钟。它应该以当前格式返回约1500条记录。

现在我可以执行非SQL路由并执行以下操作:

    def find_by_active_type(cls, is_active):
        events = cls.query.all()
        event_list = []

        for event in events:
            json = event.json()
            if json['active'] == is_active:
                event_list.append(event)

        return event_list

但是我真的很想使用数据库资源(不同的机器)。我感谢任何人帮助解决此问题。我遇到类似的情况正在影响我的另一个查询。

0 个答案:

没有答案