0

我有一个数据表,它从数据库(SQLite)中获取约 5,50,000 条记录。获取时会减慢系统速度。

我将这些记录存储在 SQLite 数据库的后端和 Datatable 的前端。现在我应该怎么做才能减少后端的数据库创建时间(~10.5 小时)和前端的获取时间。

是否有任何其他结构可以用来这样做。我读过字典和二进制文件很快。它们可以用于此目的吗?如何使用?

(它不是网络应用程序。它是前端和后端在同一台机器上的 WPF 桌面应用程序)。

4

3 回答 3

1

我相信,您的基本问题不是您想要维护的结构,而是您管理数据流的方式。与其将数据库中的所有数据提取到某个结构中(DataTable在您的情况下),不如在服务器端stored procedure进行一些您需要的计算并将已经计算的数据返回给您。通过这种方式,您可以获得几个好处,例如:

  • 拥有数据库服务器的服务器通常比开发或客户端机器更快
  • 大量减少数据传输,因为您返回计算结果

编辑

考虑到已编辑的帖子,我会说它DataTable已经在内存访问方面进行了高度优化,我认为将其更改为其他内容不会给您带来显着的好处。我认为可以带来好处的是对程序流程的修改。换句话说,尝试回答以下问题:

  • 我需要所有当代记录 吗?
  • service我可以在晚上进行一些计算吗?
  • 我可以使用SQL Server Express(只是示例)并获得运行 a 的可能性的好处,即使在同一台机器上stored procedure可以(必须测量)更快地运行这些东西?
于 2012-05-01T06:32:24.287 回答
1

您是否考虑过在数据的位置进行计算,而不是获取它?您能否向我们提供更多信息,例如它的存储内容以及您如何获取它以及如何处理它。

如果没有指标和背景信息,很难确定优化。

这很容易说 - 是的,将数据放在一个文件中。但是文件是本地的,是网络的问题,你是否充分利用了核心/线程等。

最好从数据开始,看看需要做什么,然后设计最佳优化。

编辑:

好的,所以你在同一台机器上?在这种情况下,您真正​​应该考虑的一件事是您对数据做了什么。它需要是SQL吗?如果您只是使用是加载数据表?还是您没有披露的复杂性?

I've had a similar task- I just created a large text file and used memory mapping to read is efficicently without any overhead. Is this the kind of thing you're talking about?

于 2012-05-01T06:33:44.317 回答
0

You could try using a persisted dictionary like RaptorDB for storing and fetching/manipulating the data in an ArrayList. The proof of concept should not take long to build.

于 2012-05-01T07:17:39.123 回答