Sorting 分页和排序问题
我正在研究面向数据库的web应用程序中的情况,在这种情况下,应该依赖客户端对表的排序,而不是服务器端的排序。困扰我的一个特殊情况是分页 当尝试对一个大表(比如10000行)进行分页并按特定列对其进行排序时,最好的方法是什么 据我所知,与此相关的一些问题包括:Sorting 分页和排序问题,sorting,web-applications,pagination,html-table,Sorting,Web Applications,Pagination,Html Table,我正在研究面向数据库的web应用程序中的情况,在这种情况下,应该依赖客户端对表的排序,而不是服务器端的排序。困扰我的一个特殊情况是分页 当尝试对一个大表(比如10000行)进行分页并按特定列对其进行排序时,最好的方法是什么 据我所知,与此相关的一些问题包括: 我不能一次就把整张桌子还给客户 我不能用javascript对多达10000条记录进行排序 对表进行排序将涉及对所有页面中的行进行排序,而不仅仅是对当前页面 那么,您还有什么问题要添加到此列表中吗 什么样的方法可以很好地混合客户端和服务
- 我不能一次就把整张桌子还给客户
- 我不能用javascript对多达10000条记录进行排序
- 对表进行排序将涉及对所有页面中的行进行排序,而不仅仅是对当前页面
补充: 好的,在数据库上排序并返回reqd页、上一页和下一页似乎是最好的选择
现在考虑一下:
用户位于按序列号排序的表格第3页(共10页)。现在,用户单击名为“username”的标题,希望按用户名对表进行排序 问题:最终结果应该是“第1页,共10页,按用户名排序”还是“第3页,共10页,按用户名排序”我知道这是一个非常主观的问题,但你会推荐什么?为什么?数据库在数据排序和选择方面是真正的野兽。因此,最好的办法就是让客户机对服务器说,“我想要X页,其中Y行按Z排序。”然后数据库完成它的工作,客户机显示结果。为了提高性能,您可以让客户端缓存结果,此外,在获取当前页面后,您可以让代码请求下一页和上一页,以便在请求时立即显示这些页面。最好的方法是在数据库级别进行排序和分页,只返回仅在屏幕上显示的原始数据的子集。在这个场景中没有javascript 如果由于某些原因无法在数据库级别进行排序和分页,则应使用服务器端脚本进行排序和分页。在这个场景中也没有javascript
最糟糕的方法是使用javascript进行排序和分页,当然,出于明显的原因,根本不推荐使用javascript。让db对屏幕上特定页面的内容进行排序。它几乎总是会更快,被缓存,并减轻浏览器上的此类负载
如果愿意,让客户端允许通过javascript进行进一步的子排序,如果数据足够详细,可以从中受益。您可能希望存储所选择的子排序功能,以便在页面之间记住它们。客户端最好保持简单:Javascript排序/分页仅适用于非常小的结果集-小到用户不会注意到性能影响 服务器端是优化服务器负载的地方: 负载可能以频繁请求更多页面、每页有大量行/列以及频繁请求重设的形式出现。(我们甚至还没有讨论过过滤) 因此,根据您的用户和实际使用情况,您可能需要某种形式的缓存。请注意,这些是在您了解用户正在做什么之后的一段时间内的建议:
- 对于频繁的重新调用,一个好方法是在SQL中保留一个缓存表,其中只包含结果
其他答复: 我非常主观的反应是:用户(我)想要从任意页面进行排序。让他们(我)来吧。没有什么比呆在你想去的地方,让一个应用程序把你推回到列表的开头更让人恼火的了
另一个需要考虑的问题是多层次的排序:您是否希望实现序列号排序,然后是用户名排序?考虑一下微软Excel所做的事情,或者用户熟悉的任何其他应用程序。您的用户可能会对他们习惯的内容感到满意,包括返回到第1页。好问题。你可能知道我最近处理过这个问题。