Я использую SQLAlchemy с базой данных MySQL, и я хотел бы подсчитать строки в таблице (примерно 300 тыс.). Функция SQLAlchemy count занимает примерно в 50 раз больше времени для запуска в качестве написания одного и того же запроса непосредственно в MySQL. Я что-то делаю неправильно?
# 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()
похоже на трюк и получить его до скорости. Я все еще озадачен тем, почему первоначальный запрос медленнее, хотя.