分页非常繁重的sql查询

qybjjes1  于 2021-07-26  发布在  Java
关注(0)|答案(0)|浏览(199)

我正在努力提高系统中某些报表的性能。应用程序是用.NETCore3.0编写的,我使用EFCore作为orm框架,postgresql作为数据库。此报表返回数千条记录,并在某些视图中显示给用户。结果按所选列(如开始时间或代理名称等)进行分页和排序。
这个结果是从繁重的查询中计算出来的(一次执行大约需要10秒)。要实现分页,我们需要计算一页的结果和总计数。我可以看到两种方法来解决这个问题。它们都有一些缺点。
在当前的解决方案中,我下载完整的报告,然后对其进行排序并在内存中切片一页。这种解决方案的优点是数据只从数据库中提取一次。缺点-我们加载数千条记录,但实际上我们只需要一页(50条记录)。
我看到的另一种方法是以db表示的切片记录(使用limit和offset操作符)。我将只获取数据页上的数据,但我没有所有记录的计数,所以我需要使用相同的查询参数进行第二次查询,该查询返回所有记录的计数。
你觉得这个问题怎么样?你认为哪种方法更好?也许其他的方法对这个问题是最好的?

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题