flask-admin列表视图对于大型表而言太慢

时间:2018-11-23 14:55:31

标签: flask flask-sqlalchemy flask-admin

我有一个约有35,000,000行的表,使用flask-admin显示表的列表视图花了15秒钟以上,如何提高它的速度?

2 个答案:

答案 0 :(得分:0)

如果您使用的是Postgresql,则可以使用pg_class表覆盖flask-admin count函数,该函数可以非常快速地返回表的近似计数

count = self.session.execute(
    """
    SELECT reltuples::bigint AS count
    FROM pg_class
    WHERE oid = '{0}'::regclass
    """.format(self.model.__table__.fullname)
).scalar()

答案 1 :(得分:0)

基于Zaytsev Dmitry for Postgres的先前答案进行更新,并带有Flask-Admin V 1.5.3和Python 3。

app/admin.py

class ExampleView(ModelView):

    """
    your custom code
    """

    def get_count_query(self):
        return self.session.execute(
                                     f"""
                                      SELECT reltuples::bigint AS count
                                      FROM pg_class
                                      WHERE oid = 
                                      '{self.model.__table__.fullname}'::regclass
                                      """
                                    )