Aro*_*eel 8 mysql database revision database-design
我目前正在开发一个简单的修订系统,使我能够存储单个文件的多个版本,到目前为止工作正常.
表结构如下(为简洁起见,删除了过时的列):
file_id file_revision file_parent file_name
--------------------------------------------------------
1 1 0 foo.jpg
2 2 1 foorevised.jpg
3 3 1 anotherrevision.jpg
Run Code Online (Sandbox Code Playgroud)
哪里:
file_id 是主键,自动递增file_revision存储修订号,默认为1第一个file_parent是修订版的顶级父级,默认为0第一级.file_name 是文件名.问题:
任何指针都非常感谢.提前致谢.
为了检索,最有效的方法是添加一个像 is_latest 这样的列,您需要提前填充它,然后select * from table where file_id=1 and is_latest=true当您想要获取文件 1 的最新版本时。显然,这会使更新此表变得更加复杂。
另一种方法是将文件的最新版本存储在一个表中,并将历史版本存储在另一个表中。如果您主要想选择所有最新版本的文件,select * from table where is_latest=true即使 is_latest 已编入索引,也可能相当于全表扫描。如果最新的行都在一个表中,则数据库可以在顺序 IO 中将它们全部读取出来,而不必 1) 通过该表进行大量查找以仅找到它需要的记录,或者 2) 扫描整个表,丢弃大的旧记录沿途的数据量。
假设你不想改变现有的表设计,你想做的就是选择分组最大值,看这篇文章了解在mysql中的几种不同方法。
| 归档时间: |
|
| 查看次数: |
929 次 |
| 最近记录: |