如何在Oracle中生成以物理方式排序的GUID作为主键?

悠悠

我正在尝试生成排序的GUID作为Oracle中的主键。在SQL Server中,我可以使用以下方法之一对物理行进行排序

  1. 通过集群主键作为唯一标识符。
  2. 通过NEWSEQUENTIALID。

我已经搜索了等效的Oracle,但是找不到解决方案。我知道有没有一种方法可以在Oracle数据库中创建自动递增的Guid主键?,但没有指示是否SYS_GUID()已排序。

如何在Oracle中创建顺序主键?

Ben

如果要创建GUID SYS_GUID(),则应使用该GUID ,您可以根据链接的问题在表中创建它。从文档中尚不清楚是否SYS_GUID()在增加。也许是,但是这不是一个真正的声明赋予信任。

问题的下一部分(和一些评论)不断询问集群主键。在Oracle中,这种概念与在SQL Server和Sybase中的存在方式不同。Oracle确实已建立索引组织表(IOT) ...

...以B树索引结构的变体形式存储的表...行存储在该表的主键上定义的索引中。B树中的每个索引条目还存储非键列值。因此,索引是数据,数据是索引。

物联网有很多用途,但是请记住,由于“性能原因”而要更改磁盘上数据库的物理结构。您正在使用所有具有消极和积极方面的东西来完成所有过早的优化。阅读文档,并确保这是您要执行的操作。

通常,只有在您不关心DML性能时,而是在您进行很多范围扫描时,或者您需要按主键排序时,才使用IOT。创建IOT的方式与使用普通表相同,但是由于所需的所有内容现在都已成为表的一部分,因此所有内容都将包含在表定义中:

create table test_table (
   id raw(32) default sys_guid()
 , a_col varchar2(50)
 , constraint pk_my_iot primary key (id)
   ) organization index;

值得注意的是,即使使用物联网,也必须使用显式的ORDER BY才能保证退回订单。但是,由于这种存储方式,Oracle可以列出一些捷径:

select *
  from ( select * 
           from test_table 
           order by id )
 where rownum < 2

SQL小提琴

与所有测试一样,不要假设这是您想要的结构。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

生成 Uuid 作为主键

来自分类Dev

在NHibernate 4中使用Guid作为主键时生成的不正确的Select语句

来自分类Dev

如何在CMake中生成GUID?

来自分类Dev

如何在SQLAlchemy中以Interval作为主键创建表?

来自分类Dev

如何在表中添加新列作为主键?

来自分类Dev

使用SQL Server FILESTREAM GUID作为主键

来自分类Dev

使用SQL Server FILESTREAM GUID作为主键

来自分类Dev

在SQL Server上以GUID作为主键进行联接等

来自分类Dev

如何在MySQL中将GUID / UUID设置为主键(而不是集群键)?

来自分类Dev

如何在Oracle SQL中生成Payperiod

来自分类Dev

如何在Hibernate实体注释中使用两个外键作为主键

来自分类Dev

如何通过Sails js使用bigserial作为主键ID

来自分类Dev

Flask-SQLAlchemy-插入GUID(BINARY(16))作为主键后出错

来自分类Dev

使用 Guid 作为主键和外键 Sqllite C#

来自分类Dev

导航属性作为主键

来自分类Dev

Cassandra UDT作为主键

来自分类Dev

lararvel uuid作为主键

来自分类Dev

外键作为主键?

来自分类Dev

导航属性作为主键

来自分类Dev

haskell-persistent:如何在第二个表中使用外键作为主键

来自分类Dev

排序python字典,其中“值”作为主键,“键”作为辅助键

来自分类Dev

如何在HyperJaxb3 Cxf项目中(从wsdl生成代码)将现有ID设置为主键?

来自分类Dev

如何在MongoDB中将多个字段设置为主键?

来自分类Dev

CakePHP-主键问题,如何覆盖默认的“ id”字段作为主键

来自分类Dev

CakePHP-主键问题,如何覆盖默认的“ id”字段作为主键

来自分类Dev

主键如何在DBMS的联结表中工作?复合键如何成为主键?

来自分类Dev

使用GeneratedValue作为主键的Hibernate SaveOrUpdate

来自分类Dev

雄辩的模型返回0作为主键

来自分类Dev

使用外键作为主键

Related 相关文章

  1. 1

    生成 Uuid 作为主键

  2. 2

    在NHibernate 4中使用Guid作为主键时生成的不正确的Select语句

  3. 3

    如何在CMake中生成GUID?

  4. 4

    如何在SQLAlchemy中以Interval作为主键创建表?

  5. 5

    如何在表中添加新列作为主键?

  6. 6

    使用SQL Server FILESTREAM GUID作为主键

  7. 7

    使用SQL Server FILESTREAM GUID作为主键

  8. 8

    在SQL Server上以GUID作为主键进行联接等

  9. 9

    如何在MySQL中将GUID / UUID设置为主键(而不是集群键)?

  10. 10

    如何在Oracle SQL中生成Payperiod

  11. 11

    如何在Hibernate实体注释中使用两个外键作为主键

  12. 12

    如何通过Sails js使用bigserial作为主键ID

  13. 13

    Flask-SQLAlchemy-插入GUID(BINARY(16))作为主键后出错

  14. 14

    使用 Guid 作为主键和外键 Sqllite C#

  15. 15

    导航属性作为主键

  16. 16

    Cassandra UDT作为主键

  17. 17

    lararvel uuid作为主键

  18. 18

    外键作为主键?

  19. 19

    导航属性作为主键

  20. 20

    haskell-persistent:如何在第二个表中使用外键作为主键

  21. 21

    排序python字典,其中“值”作为主键,“键”作为辅助键

  22. 22

    如何在HyperJaxb3 Cxf项目中(从wsdl生成代码)将现有ID设置为主键?

  23. 23

    如何在MongoDB中将多个字段设置为主键?

  24. 24

    CakePHP-主键问题,如何覆盖默认的“ id”字段作为主键

  25. 25

    CakePHP-主键问题,如何覆盖默认的“ id”字段作为主键

  26. 26

    主键如何在DBMS的联结表中工作?复合键如何成为主键?

  27. 27

    使用GeneratedValue作为主键的Hibernate SaveOrUpdate

  28. 28

    雄辩的模型返回0作为主键

  29. 29

    使用外键作为主键

热门标签

归档