sqlalchemy 优化count()……

时间:2022-09-26 11:44:38

一、sqlalchemy 中的count()

  count()统计数据特别慢:

  session.query(cls).count()  8W 数据花费了近50s

  但是在数据库中直接查询: select count(*) from table_name. 用时仅0.738s

  这个差别让人真是匪夷所思。

  后来在【1】看到了原因:count()方法被用于确定返回的结果集中有多少行,让我们观察一下产生的SQL语句,SQLAlchemy先是取出符合条件的所有行集合,然后再通过SELECT count(*)来统计有多少行。

  这个就是遍历完数据库所有记录以后,再select count(*).是很恐怖的,当数据量大的时候,低于100W都不算大吧。当然时间是全部花在了遍历上边.

  我们可以通过表达式func.count()直接使用count函数。-----这个就是相当于数据库中的直接count()

  session.query(func.count(cls.id)).scalar()---直接统计主键id

二、其他优化

-------2016-6-28 11:40:23---

  source: 【1】sqlalchemy 查询

        [2] sqlalchemy 操作技巧