码迷,mamicode.com
首页 > 数据库 > 详细

sqlalchemy 优化count()……

时间:2016-06-28 12:34:04      阅读:188      评论:0      收藏:0      [点我收藏+]

标签:

一、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 查询

sqlalchemy 优化count()……

标签:

原文地址:http://www.cnblogs.com/mxh1099/p/5622905.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!