带有约束的SQL数据类型:每个下一个元素都大于/小于前一个元素

时间:2014-05-08 15:47:44

标签: sql sorting search

是否有任何数据库管理系统具有约束的数据类型(可以是整数或日期时间):每个下一个元素必须大于/小于前一个元素?

可能的用例 - 存储当前时间戳(时间戳应该是几分之一秒以防止重复的条目)。这样的列最终被预先排序,并且在没有索引的情况下大大提高了它的搜索速度。

1 个答案:

答案 0 :(得分:0)

  

这样的列最终被预先排序并且搜索速度很快   没有索引就改进了。

SQL数据库管理系统不支持"预先排序"没有索引。该索引可能是明确的或隐含的。通过CREATE INDEX语句产生显式索引。隐式索引通常通过PRIMARY KEY或UNIQUE约束来实现。 (逻辑约束通常使用物理索引实现。)

这里有两个问题:独特,连续。

即使在序列化交易中,current_timestamp的值也不保证是唯一的。约束(如主键约束或唯一约束)可以保证表存储唯一时间戳,但它不能保证每个事务获取< / em>一个独特的时间戳。

顺序整数 - 通过各种名称 - 保证是唯一的和顺序的,即使在具有高并发性的数据库中也是如此。 (如果你以这种方式构建它们;例如,你可以在PostgreSQL中创建一个向后的序列。)但它们并不保证是连续的;回滚将&#34;燃烧&#34;一个数字,dbms不会尝试重复使用它。

最后,存储行的顺序并不一定与它们被提取并呈现给客户端的顺序有关,即使使用索引或群集密钥也是如此。以可预测的顺序返回行的唯一方法是使用ORDER BY子句,它几乎总是从索引中受益。