sqlalchemy 優化count()……


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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM