从DB访问大量内容的方法

时间:2015-08-06 12:06:37

标签: javascript jquery mysql browser datatable

我需要从DB获取大量数据(可能是大约10K记录)并将其显示为报告(我使用DataTable),并且它具有数据过滤/搜索和分页。

问题 - 从以下选项中选择哪一个是最佳/推荐方式,

    • 我将立即获取所有记录并将其存储在前端(作为对象),如果过滤器适用,我将从对象中过滤并显示它。
    • 同样,如果我使用分页,我不会与DB交互(因为我已经拥有了所有的记录)
    • 每当我应用过滤/搜索时,我都需要联系数据库。
    • 同样适用于分页, 例如,如果我选择第5页,那么我将向DB发送查询以仅获取这些数据并显示它。注意:每页的记录数也是可供选择的选项。
  1. 如果我们有其他最佳方式,请指导我。

    谢谢,

1 个答案:

答案 0 :(得分:-1)

我不熟悉DataTable,但它似乎与我熟悉的jqGrid类似。

我更喜欢你提出的解决方案#2。你最好只取你需要的东西。如果您只显示100行,那么如果您只显示100行,则一次性获取10k行会浪费(在带宽和本地内存使用方面)。

在MySQL端使用LIMIT仅获取所需的记录。如果您想要第3页的记录200到300,您可以在查询结尾添加LIMIT 200,100(LIMIT的第一个参数表示"从200&#34开始) ;第二个说"获取100行。")如果DataTable像jqGrid一样工作,你应该能够重新查询数据库并在用户更改页面时重新填充表格,并且这个获取将完成在后台使用AJAX,可以节省带宽。除了查询结尾处LIMIT指定的范围外,您的查询将是相同的。

以这种方式思考:假设您使用GMail并且您从不存档您的邮件,因此您的收件箱包含20,000封电子邮件,但每页只显示100封。您是否认为Google设计了GMail前端,以便一次性获取所有20k主题和行,并在本地存储,或者在用户更改页面时再次查询服务器? (它是后者。)