您的位置:首页 > 数据库

sqlalchemy 优化count()……

2016-06-28 11:47 253 查看
一、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 操作技巧
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: