我有一个大型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
...
我需要加载所有数据以进行一些复杂的计算:yield,total,by company ...
然后我需要在表中显示所有数据,但我想逐渐像无限滚动,分页或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
最好的方法是什么?
答案 0 :(得分:4)
不要害怕使用多个查询。我觉得你想要一次性做到这一点,不要。你可能会在这种情况下使用它,但它很难维护。是的,您应该尽量减少查询,但不要过度优化。
首先,您计算平均值和总数并立即返回,这将提供您的第一个统计信息。然后你显示了第一个X项目,我建议你不要使用AJAX,但是在构建那个页面时这样做。这是另一个查询。之后,您可以在AJAX通话中自由使用您的LIMIT来显示您的下一个/上一个。
通过拆分查询,您可以根据需要优化AVG / SUM查询,并优化普通线查询。这甚至可能会改善您目前的表现。