一、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 操作技巧