当前位置: 首页 > 知识库问答 >
问题:

处理大量数据的最佳方式

桂浩言
2023-03-14

目前,我的应用程序的某些部分在将大量数据加载到报告表时遇到了速度问题。报告表中的数据是从多个表中提取的,并运行一些复杂的查询,但这是必需的。

除了优化代码,我的问题是,您个人如何处理需要向用户显示的大量数据,最佳实践是什么?

目前我正在处理所有的数据,然后通过javascript库生成数据表。

我知道的事情:

  • 用户不需要一次看到所有数据
  • 用户需要能够搜索所有数据
  • 用户需要能够过滤数据

最好的方法真的是使用加载微调器,在页面首次加载时只加载一小部分数据吗?那么剩下的数据检索是通过Ajax进行的?

我觉得一定有更好的方法

谢谢,

共有1个答案

蒋波光
2023-03-14

我觉得你有点在回答自己的问题。是的,最好不要一次将整个数据库交付给用户,这就是为什么任何RDBMS都支持像< code>LIMIT这样的东西。您的三个标准完全符合数据库系统可以为您做的事情——对小型数据子集(即页面)的查询,可以根据搜索查询进行筛选或匹配。

为了简化前端,您也可以通过AJAX加载第一个页面,尽管预渲染确实会使页面更具响应性。尽管如此,这个问题已有许多解决办法;一些模板引擎和JS前端框架(Vue.JS-SSR)支持服务器端预渲染。

 类似资料:
  • 问题内容: 我有一个Java应用程序,它需要显示大量数据(大约一百万个数据点)。数据并不需要全部同时显示,而仅在用户请求时才显示。该应用程序是桌面应用程序,未与应用程序服务器一起运行或未与任何集中式数据库连接。 我的想法是在计算机上运行数据库并在其中加载数据。在大多数时候,数据库都是只读的,因此我应该能够建立索引以帮助优化查询。如果我在本地系统上运行,则不确定是否应该尝试实现一些缓存(我不确定查询

  • 问题内容: 我必须在php中解析大型XML文件,其中之一是6.5 MB,它们甚至可能更大。如我所读,SimpleXML扩展将整个文件加载到一个对象中,这可能不是很有效。以您的经验,最好的方法是什么? 问题答案: 对于大文件,您将要使用SAX解析器而不是DOM解析器。 使用DOM解析器,它将读取整个文件并将其加载到内存中的对象树中。使用SAX解析器,它将顺序读取文件并调用用户定义的回调函数来处理数据

  • 我的目标是编写一个用于测量方法执行或事务时间以及处理测量的框架,即存储、分析等事务可能包括对外部系统的调用,并同步或异步等待结果。 已经有一些问题围绕着这个话题,比如 “如何对方法的执行进行计时” “度量Java方法的执行时间” “System.CurrentTimeMillis vs System.NanoTime” 所有的答案都可以归结为三种花时间的方法 和(自Java八号以来) 我知道,所有

  • 问题内容: 我正在使用Spring批处理下载一个大文件来处理它。场景很简单: 无需保存输入文件数据。 我们可能同时运行多个(相同场景的)作业实例 我正在寻找最佳实践来处理这种情况。 我是否应该创建Tasklet以便在本地下载文件,而不是通过常规步骤开始处理它? 在这种情况下,我需要考虑一些临时文件问题(确保删除了该文件,确保不覆盖其他临时文件,等等。) 另一方面,我可以下载它并将其保留在内存中,但

  • 问题内容: 如果创建Oracle dblink,则无法直接访问目标表中的LOB列。 例如,使用以下命令创建一个dblink: 之后,您可以执行以下操作: 除非该列是LOB,否则您将收到错误: 这是有据可查的限制。 同一页上建议您将值提取到本地表中,但这有点…杂乱无章: 还有其他想法吗? 问题答案: 是的,这很混乱,不过我想不出办法避免这种情况。 您可以通过将临时表创建放入存储过程中(并使用“立即执

  • 问题内容: 我有一个用Go编写的Web服务,目前我将这个Global包导入到任何地方,其中包含与MongoDB的连接(通过MGO),但是我不得不说这对我来说非常讨厌。在Go中维护与数据源的连接的最佳实践是什么?我来自PHP世界,因此来自Global:S 问题答案: 导入一个将初始化对象导出为包级别变量或通过访问器/初始化程序导出的包没有错。后者也许对古典“ OOP主义者”更具吸引力。