计算某些数据时如何进行表格分页?

时间:2017-11-07 11:27:30

标签: php mysql pagination

我正在处理一个包含适度数据表(1500行)的页面。

我一直在尝试优化显示此表的页面的负载,但加载所有1500行会将页面加载速度降低到约10秒。

我已经问过其他SO问题,试图优化我的页面和数据集,但每个人都建议对数据进行分页。

我的问题是数据并非全部可用 - 其中一些是经过计算的。

所以我的表有几列。有些是直接从mysql数据库加载的 - 名称,价格等。但是会计算两列。

对于每一行,我需要从数据库下载数据,填充直接数据,如名称或价格,然后对数据进行计算以填充剩余的列。

该表必须允许按每列进行排序,因此我无法看到任何允许这样做的方法,除了让一次显示完整的1,500行表。否则,如何按计算列之一对表进行排序?

那么如何对该表进行分页呢?

我知道如果数据全部是固定的,但使用ORDER BY和LIMIT,如何分页,但计算的行不允许我对所有列执行此操作。

计算不能单独进行计算和存储,因为数据每天都在变化,用户可以通过表单输入选择对数据进行的计算。

1 个答案:

答案 0 :(得分:0)

您可以在SQL中考虑OFFSET + LIMIT:LIMIT+OFFSET

对于第一页,您可以显示前100行

SELECT * FROM YOUR_TABLE ORDER BY ID DESC LIMIT 100 OFFSET 0

对于第二页,您可以使用偏移量100并显示接下来的100行

SELECT * FROM YOUR_TABLE ORDER BY ID DESC LIMIT 100 OFFSET 100

等等。

您也可以使用一些开源缓存,例如Redis。缓存系统工作得更快,但您需要将数据保存在那里并读取而不是数据库。