Я работаю над зрелой системой, которая использует алхимию sql, а не алхимию sql. У него один особенно медленный поиск. Требование заключается в добавлении нумерации страниц. Проблема в том, что если я отправляю поиск по количеству, то по моим измерениям я вижу скачок от 50% до 100% общего времени поиска. Соответствующий фрагмент ниже. Я хотел бы, чтобы общее количество записей было возвращено в основном поиске и не нужно было выполнять поиск вторичного количества. (используя _get_count, поскольку он примерно на 50% быстрее, чем один .count ()). Есть идеи?
query = session.query(BusinessAttributes.name,
BusinessAttributes.trading_as,Business.business_ref)\
.join(Business)\
.filter(and_(or_(*filters)))\
.distinct().order_by(BusinessAttributes.name)
results = query.limit(limit).offset((page-1)*limit).all()
if page == 1 and len(results) < limit:
total_business_count = len(results)
else:
total_business_count = _get_count(query)
return results, total_business_count
def _get_count(q):
count_q = q.statement.with_only_columns([func.count()]).order_by(None)
return q.session.execute(count_q).scalar()