javascript - 大型 sql 表 - 选择所有但使用 javascript/PHP 逐步显示

标签 javascript php jquery mysql ajax

我有一个大型 SQL 表,其中包含如下用户历史数据:

ID    Name     Units     Company      Benefit  Date
1     John     1.5       Example A    300$     1/1/2016
2     Paul     2.12      Example B    600$     1/2/2016
3     Mike     3.21      Example A    250$     1/3/2016 
...

我需要加载所有数据以进行一些复杂的计算:产量、总计、按公司...

然后我需要在表格中显示所有数据,但我想像无限滚动、分页或 Ajax 加载一样逐步显示。但是我不能使 SQL LIMIT 因为需要先加载所有数据。

解决方案是进行 2 次查询:一次查询所有数据,一次查询 LIMIT

我最终需要的页面是这样的:

**Hi John,**

Your total benefit is: 2043$
Your total yield is: 2%
Your total units by day: 1.25
...

**Historical data**

1/1/2016 - Example A - 1.5 units - 100$ benefit
2/1/2016 - Example B - 2.5 units - 200$ benefit
3/1/2016 - Example A - 3.5 units - 30$ benefit
4/1/2016 - Example C - 1.25 units - 500$ benefit
5/1/2016 - Example A - 1.5 units - 3$ benefit
6/1/2016 - Example A - 2.5 units - 5.4$ benefit

PREV PAGE - NEXT PAGE

什么是最好的方法?

最佳答案

不要害怕使用多个查询。我觉得您想一次完成所有这些,不要。您可能会在这种情况下使用它,但很难维护。是的,您应该尽量减少查询,但不要过度优化。

首先你计算你的平均值和总数并立即返回,这将给出你的第一个统计数据。然后你会显示前 X 个项目,我建议你也不要使用 AJAX,而是在构建该页面时这样做。这是另一个查询。之后,您可以在 AJAX 调用中自由使用您的 LIMIT 来显示您的下一个/上一个。

通过拆分查询,您可以根据需要优化 AVG/SUM 查询,并优化普通行查询。这甚至可能会改善您当前的表现。

关于javascript - 大型 sql 表 - 选择所有但使用 javascript/PHP 逐步显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38718502/

相关文章:

php - MySQL 时间戳是一个日期时间 : shouldn't it be an integer? 我需要通过 URL 传递它

php - 尝试使用查询从数据库中过滤数据。为什么这行不通?

php - 如何使用 PHP 和 htaccess 创建动态子域?

Javascript bootstrap模态调用函数

javascript - 检测虚拟键盘与硬件键盘

javascript - 执行按键操作

javascript - 在 jquery 中如何让鼠标悬停和点击一起发挥良好作用?

jquery - jQuery 动画和服务器加载延迟的笨拙过渡 - 改进方法?

javascript - 将 ajax 响应保存到文件

javascript - 如何在javascript中使用循环将函数增加1