使用jquery执行大型查询和过滤更好,还是执行更小的查询?

时间:2011-07-30 19:33:48

标签: php jquery mysql

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

重新构建查询字符串并在每次过滤器更改时重新查询数据,或者根据过滤器进行一次大型查询并过滤结果会更好吗?

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

2 个答案:

答案 0 :(得分:7)

我想说完全基于用户选择的数据来构建查询,只是因为当数据变得庞大且难以处理时,将所有数据发送到客户端将是愚蠢的。如果你想一想,它会以两种主要方式对表现产生不利影响:

  1. 大量数据下载到客户端。
  2. JavaScript需要处理(排序/过滤)结果并显示用户要求的内容。
  3. 这在我的书中毫无疑问。您最终必须重新设计解决方案,以便根据数据库的大小进行扩展,这是您不想要的。

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

答案 1 :(得分:1)

在这种情况下,我建议使用ajax调用来获取过滤后的信息。您还可能希望限制显示的选项数量。您可以将查询限制为不超过25,50或100个选项,而不必渲染数千个选项(这可能非常耗时)。这样可以节省时间(检索信息少,服务器端工作量减少,数据传输速度更快,客户端操作速度更快)。您的用户仍然可以使用过滤功能获取所需信息。

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