用jquery做一个大查询和过滤,还是做更多的小查询更好?

Posted

技术标签:

【中文标题】用jquery做一个大查询和过滤,还是做更多的小查询更好?【英文标题】:Is it better to do a large query and filter with jquery, or do more smaller queries? 【发布时间】:2011-10-16 15:57:57 【问题描述】:

我正在使用 php/mysql 和 jquery 编写我的第一个网站。对于下一部分,用户将应用过滤器和排序来查找特定项目(如高级搜索等),并且还会有一个搜索框。我希望数据在任何复选框过滤器更改后立即反映更改(目前有一个测试 ajax 调用,没有数据库查询可以很好地做到这一点)。

每次过滤器更改时重新形成查询字符串并重新查询数据会更好,还是进行一次大型查询并根据过滤器过滤结果?

目前,记录的数量会很少,但可能会增长到数千。

【问题讨论】:

@Daniel Ruf 我不确定你的意思。过滤和排序将从单个表中提取,并显示结果。 好吧,如果您将多次与以前相同的数据加载到 javascript 中,因为对象太多并且大部分数据都相同,请创建正确的 mysql 查询并让服务器对其进行处理你(所以客户端不会挂起)大多数时候你的服务器什么都不做,你可以使用 .load() 用 ajax 加载这个查询,并提供一个用于排序的 php 文件参数等等 【参考方案1】:

我会说仅根据用户选择的数据构建查询,因为当数据确实变得庞大且笨拙时,将所有这些都发送给客户端会很愚蠢。如果您考虑一下,这将在两个主要方面对性能有害:

    大数据下载到客户端。 JavaScript 需要处理(排序/过滤)结果并显示用户要求的内容。

在我的书中,这很简单。您最终将不得不重新设计解决方案以适应数据库的大小,这是您想要的。

服务器擅长处理查询以及对大量数据进行排序和过滤。如果你有选择的话,这不是你应该在客户端做的事情。

【讨论】:

谢谢!我期待着实现这个! 它还可以保护您免受他人窃取您网站的信息以及他人的安全和隐私的侵害【参考方案2】:

在这种情况下,我建议使用 ajax 调用来获取过滤后的信息。您可能还想限制显示的选项数量。您可以将查询限制为不超过 25、50 或 100 个选项,而不必呈现数千个选项(这可能很耗时)。这样可以节省时间(检索的信息更少,服务器端的工作更少,数据传输速度更快,客户端操作也更快,因为数量较少。而且您的用户仍然可以使用过滤来获取他们需要的信息。

如果记录的数量可能保持在较低水平(数十条记录而不是数千条记录),则在不使用 ajax 的情况下实施客户端过滤可能会更快。但是你需要找到一种方法来过滤 javascript 中的数据,这可能会产生其自身的影响。

【讨论】:

以上是关于用jquery做一个大查询和过滤,还是做更多的小查询更好?的主要内容,如果未能解决你的问题,请参考以下文章

jQuery学习教程,写更少的代码,做更多的事情

Vue组件(28)做一个更好用的查询控件(四)把日期查询做到极致

jQuery学习教程,写更少的代码,做更多的事情

用PHP做负载均衡指南

我用JQuery miniui 做了一个表格,求大神指教一个下拉框问题

jQuery学习教程,写更少的代码,做更多的事情