我有一个MySql数据库,我做了一些可能很大的查询。我从查询中获得的数据存储在PHP中的2D数组中,然后生成一个HTML表供用户查看。目前,我正在尝试实现一种为用户以各种方式对数据进行排序的方法。当然我可以再次调用查询并告诉它以不同的方式排序,但我认为这可能不是一种非常有效的方式。我的想法是以某种方式缓存数据,然后每次数据应以新的方式排序以获得结果时调用javascript。不幸的是我不知道该怎么做...... :)
所以,我的问题是:
- 这样做是不是一个好主意?
- 我怎么能实现这个功能?
答案 0 :(得分:1)
有一些javascript库可用于在客户端对表进行排序,甚至不需要进行服务器调用。它很容易在客户端使用自己的javascript进行排序。 Here仅供参考
答案 1 :(得分:1)
您希望这个规模有多大?一次在HTML表格中显示多少数据?如果您希望表中的行数达到您必须分页超过少量页面的程度,那么通过从数据库重新调用数据来实现排序会变得更加高效,因此您无需获取整个数据集。
如果您的数据集中有10,000行,但一次只有30行,那么在客户端存储和排序这些行的开销是不值得的。
如果你知道你永远不会拥有超过少数几个“页面”(比如每页少于5 *的记录),那么获取一次并在客户端操作它就没什么大不了的。
如果你知道你的工作量小95%,大5%,那么混合可能是有序的:每次获取150条记录,如果你的数量少于150,你可以拥有它们。留在客户端是安全的。如果它不止于此,则假设它可能非常大并且以块的形式获取数据。如果数据集大小有更多渐进的斜率,只要排序顺序不变,您就可以缓慢地缓存块并慢慢构建数据集。