我将 SQLAlchemy 与 MySQL 数据库一起使用,我想计算表中的行数(大约 300k)。SQLAlchemy计数函数的运行时间大约是直接在 MySQL 中编写相同查询的 50 倍。难道我做错了什么?
# this takes over 3 seconds to return
session.query(Segment).count()
然而:
SELECT COUNT(*) FROM segments;
+----------+
| COUNT(*) |
+----------+
| 281992 |
+----------+
1 row in set (0.07 sec)
速度差异随着表的大小而增加(在 100k 行下几乎看不到)。
更新
使用session.query(Segment.id).count()
而不是session.query(Segment).count()
似乎可以解决问题并使其加快速度。我仍然很困惑为什么初始查询速度较慢。