我正在使用sql alchemy而不是flask sql alchemy的成熟系统上工作。它的搜索特别慢。要求是添加分页。问题是,如果我提交了计数搜索,那么根据我的测量,我发现整个搜索时间在50%到100%之间跳跃。相关代码段如下。我想要的是要在主搜索中返回的记录总数,而不必进行二级计数搜索。 (使用_get_count大约比单独使用.count()快50%)有什么想法吗?
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()