gpt4 book ai didi

database - BDB,如何按指定顺序获取主键?

转载 作者:塔克拉玛干 更新时间:2023-11-03 06:04:46 26 4
gpt4 key购买 nike

我在 oracle 论坛上问了几天同样的问题,但没有答案:(链接是:http://forums.oracle.com/forums/thread.jspa?threadID=2162345&tstart=0

您好,我搭建BBS是用BDB作为后台数据库,论坛数据库,话题数据库,帖子数据库共享一个环境。此BBS web 应用程序是多线程程序。如果用户选择一个论坛,其主题将按照最后回复时间的顺序排列;选择一个主题,帖子也将按照回复时间的顺序排列。

struct forum {
UInt16 forumID;
string forumName;
string _lastPoster; // who is the last one replied in this forum
};

struct topic {
UInt32 topicID;
UInt16 forumID; // topic comes from this forum
string title; // topic title
UInt64 dateOfLastReply; // when last reply to this topic happen
};

struct post {
UInt64 postID;
UInt32 topicID; // post comes from this topic
string title; // post title as of topic
UInt64 dateOfPost; // when this post is created
};

我为主题创建一个主数据库和两个辅助数据库,主键是topicID,辅助键分别是forumID和dateOfLastReply,我想在第一个浏览器页面上以最新回复时间顺序显示第一个25个主题,第二个25个主题在第二个浏览器页面上,等等。

如果使用 SQL,它将是:SELECT topicID FROM topic WHERE forumID=xx ORDER BY dateOfLastReply 降序

从性能角度,我想获取同一个论坛的所有主题id,并且需要它们按回复时间顺序出现,然后根据返回的topicID 一个一个地检索主题,我该怎么做?猜想我必须使用连接。另外,鉴于每次浏览器想要请求下一页(即本论坛的第 2 个 25 个主题)时都会发生主题检索,您对检索性能有什么建议吗?DB_DBT_MULTIPLE 对我有帮助吗?

谢谢。

最佳答案

您需要创建一个具有复合键的辅助数据库,该复合键由 (forum_id, dateoflastreply) 组成。然后,您想要的所有结果都将在连续的行范围内,您可以通过范围扫描来查询它们(例如,以 (1, 2010-01-01) 开头的 20 行)。

关于database - BDB,如何按指定顺序获取主键?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4801096/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com