Database design 在数据库中存储大量有序但可重新排序的数据的策略?
如果需要以特定顺序返回大量数据(比如一百万行),一个明显的方法就是在每一行上放置一个数字索引,并按该索引的顺序进行排序。但是,如果您想在该数据中间创建一个新行,则您可能需要在索引中需要在两行之间放置一个间隙,或者您需要“更新表集位置=位置+ 1,其中位置> NeXyPoT”,这可能是缓慢而不可扩展的。 有没有更聪明的策略来处理这个问题?我是否最好只在行之间留一个大的间隙,并希望得到最好的结果(可能用后台进程代替行)。是否有一个相当于链表的数据库Database design 在数据库中存储大量有序但可重新排序的数据的策略?,database-design,Database Design,如果需要以特定顺序返回大量数据(比如一百万行),一个明显的方法就是在每一行上放置一个数字索引,并按该索引的顺序进行排序。但是,如果您想在该数据中间创建一个新行,则您可能需要在索引中需要在两行之间放置一个间隙,或者您需要“更新表集位置=位置+ 1,其中位置> NeXyPoT”,这可能是缓慢而不可扩展的。 有没有更聪明的策略来处理这个问题?我是否最好只在行之间留一个大的间隙,并希望得到最好的结果(可能用后台进程代替行)。是否有一个相当于链表的数据库 编辑:我知道什么是索引,以及如何进行传统排序(阅读
编辑:我知道什么是索引,以及如何进行传统排序(阅读我的第一句话)。我想知道是否有一种数据结构可以在排序索引的中间插入一个新行,以便仍然可以进行范围查询。据我所知,传统的下一个/上一个指针无法作为单个范围查询来执行此操作。数据库不是电子表格,也没有隐式排序
select Col1, Col2, Col3
from some_table
where Col3 between value_1 and value_2
order by Col2 asc;
对于加速检索,使用索引。
您不能在数据中间创建元组。您将在末尾添加它。 必须使用order by列以正确的顺序返回数据,如果对其进行索引,则返回速度会很快 是否有一个相当于链表的数据库 不是直接的-有一些在sql中存储树的想法-这比您要求的要多一些-但是几乎是相同的设计。 但请注意,这会导致对每个元组进行查询(读取链接目标,选择下一个元组)。如果处理数以百万计的元组,这将非常缓慢<>你的编辑:你不能添加元组中间! 如果您确实需要这样做:
- 创建新表-按所需顺序添加所有内容
- 放下旧桌子
- 将新表重命名为旧表
- 请注意,您需要为每个添加的元组执行此操作(只要不在数据末尾添加元组)