使用什么数据结构来存储缓存的 SQL 查询?

发布于 2024-12-13 17:11:52 字数 592 浏览 0 评论 0原文

我想使用这样的数据结构:

  building string  (indexed)
  date     TDate   (indexed)
  room_id  integer (indexed)
  measurement_data -> various fields

更改远程 SQL 服务器中的数据库查询。

这样,对于给定的建筑物,我只需查询数据库一次,并且可以使用 Delphi 中间件应用程序将各个数据项分发到后端。

您建议使用哪种数据结构来存储这些内容,以便我可以快速检索数据项。

我正在考虑将其放入具有上述项目的类中,并将对象放入 TStringList 中,但随后我在数据上只有 1 个索引。
因为我主要检索单个项目,所以我不想使用客户端数据库。
是否有更好的 TList 变体可以让我快速检索项目。

换句话说,TStringlist(带有附加的)对象仅允许一个索引。 (字符串)是否有更好的允许多个索引的列表?

编辑
TCollection 听起来是一个更好的匹配,这是一个好主意吗?

I want to use a datastructure like this:

  building string  (indexed)
  date     TDate   (indexed)
  room_id  integer (indexed)
  measurement_data -> various fields

To change a database query in that's in a remote SQL server.

This way I only have to query the database once for a given building and I can use a Delphi middleware application to hand out individual data items to a backend.

What kind of data structure would you recommend for storing this stuff, so that I can retrieve data items quickly.

I was thinking of putting it in a class with the above items and putting the objects in a TStringList, but then I only have 1 index on the data.
Because I'm retrieving individual items mostly I don't want to use a clientside DB.
Is there a better TList variant that will let me retrieve an item quickly.

In other words, TStringlist (with attached) objects only allows one index. (the string) is there a better List that will allow multiple indexes?

EDIT
TCollection sounds like a much better match, is that a good idea?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

那请放手 2024-12-20 17:11:53

在我的一个旧项目(Delphi 7 左右)中,我通过使用多个 TList 存储指向记录的指针来实现这一点。其中一个列表拥有这些项目并负责清理,其他列表指向相同的项目,但每个列表的排序方式不同,用作二分搜索查找的索引。除了它们的顺序之外,列表是相同的并且保持同步 - 添加项目会添加到所有列表中,删除项目会从所有列表中删除。

另一种选择是使用 TClientDataSet 或其他具有索引支持的内存数据集。

In one of my old projects (around Delphi 7) I did this by having multiple TLists storing pointers to records. One of the lists owns the items and is responsible for cleanup, the others point to the same items but each list is sorted differently, serving as indexes for binary search lookup. Other then their order, the lists are identical and kept in sync - adding an item adds to all the lists, removing an item removes from all the lists.

Another option would be to use TClientDataSet or another in-memory dataset with indexing support.

半山落雨半山空 2024-12-20 17:11:53

可能是:SynBigTable a 'in内存快速表,包含字段、索引和搜索。

May be : SynBigTable a 'in Memory' fast table with fields, indexes and search.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文