gpt4 book ai didi

mysql - 保留记录修订

转载 作者:搜寻专家 更新时间:2023-10-30 20:54:26 26 4
gpt4 key购买 nike

我有一个文章列表及其修订版。在这种情况下,只有两条规则很重要:

(i) 当有人要求对文章进行特定修改时,应该交付。

(ii) 当有人请求文章时只通知文章标识符,应交付该文章的最新修订版。

要获得包含最新修订的文章列表,我们使用以下 View :

CREATE  OR REPLACE VIEW `only_articles` AS
SELECT *
FROM article AS a
WHERE a.revision = (
SELECT MAX(ma.revision) AS max_revision
FROM article AS ma
WHERE ma.id = a.id
);

有什么办法可以优化这个查询吗?有什么办法可以避免子查询吗?有没有更好的方法来存储这些修订?

这是表格结构(简化):

CREATE TABLE `article` (
`ai_id` int(11) NOT NULL AUTO_INCREMENT,
`id` int(11) NOT NULL,
`revision` int(11) NOT NULL,
`title` varchar(45) NOT NULL,
PRIMARY KEY (`ai_id`),
UNIQUE KEY `ID_VERSION` (`id`,`revision`)
) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=latin1;

一些数据:

ai_id   id      revision  title
1 1 1 'Text one'
2 1 2 'Text two'
3 1 3 'Text three'
4 2 1 'Another Article'
5 2 2 '2nd revision of another article'

预期输出:

ai_id   id      revision  title
3 1 3 'Text three'
5 2 2 '2nd revision of another article'

我认为该项目不仅仅需要时态数据库来解决这个问题。这是唯一需要版本控制的表,而且存储的内容太小(每条记录约 2KB)。

似乎很多好的CMS和Wiki(比如MediaWiki或者Wordpress)都遇到过这种情况。关于他们如何解决以及这些项目中使用的方法的优缺点的任何提示?

最佳答案

Mediawiki 有单独的表格 pagerevision ,页表在page_latest字段中存储了一个最新修订的rev_id

关于mysql - 保留记录修订,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29016551/

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