关于ORACLE的GUID主键生成
Oracle的定义sequence例子:
create sequence seq_test
minvalue 10000
maxvalue 99999999999999999
start with 20000
increment by 1
cache 20
cycle
order;
从网络搜索得到的结论看,一般的意见总结为:
1.SYS_GUID()比sequence复杂;
2.SYS_GUID做主键,则表、索引存储开销多;
3.SYS_GUID索引查询比sequence慢;
但实际上,若每天5万条记录,则一年365*50000=18250000条记录,则理论上需要多耗费空间约合 1.46 GB 存储空间.显然,这些空间对当前的服务器的内存系统而言,影响并不大(按月分区), 就磁盘消耗而言都是微不足道的.
查询的时候用guid和sequence执行计划也是差不多的,也就是查询效率并不一定差。
从实践来看,使用SYS_GUID()做主键的优点多于负面影响。特别是在多个数据库数据集成时,GUID的优点显而易见。而关系数据库设计的法则约定:“主键不要代表任何意义”,更何况开发商既然提供这个功能而且一直在用,所以它的存在自有它的可取之处,因此建议采用guid。
RETURN CHAR
IS
v_guid CHAR (38);
v_guid_part_one CHAR (8);
v_guid_part_two CHAR (4);
v_guid_part_three CHAR (4);
v_guid_part_four CHAR (4);
v_guid_part_five CHAR (12);
BEGIN
SELECT SYS_GUID ()
INTO v_guid
FROM DUAL;
v_guid_part_two := SUBSTR (v_guid, 8, 4);
v_guid_part_three := SUBSTR (v_guid, 12, 4);
v_guid_part_four := SUBSTR (v_guid, 16, 4);
v_guid_part_five := SUBSTR (v_guid, 20, 12);
v_guid :=
CONCAT
(CONCAT
('{',CONCAT
(CONCAT
(CONCAT
(CONCAT (CONCAT (CONCAT (CONCAT (CONCAT (v_guid_part_one,
'-'),
v_guid_part_two
),
'-'
),
v_guid_part_three
),
'-'
),
v_guid_part_four
),
'-'
),
v_guid_part_five
)
),
'}'
);
RETURN (v_guid);
END GET_GUID;
/
转载于:https://www.cnblogs.com/zjw520/archive/2013/04/23/3036979.html
关于ORACLE的GUID主键生成相关推荐
- hibernate native oracle,hibernate native 主键生成策略
前一次做个系统用的oracle数据库,使用hibernate生成主键的策略是SEQUENCE,当时觉得很累,因为不知道怎么的,oracle+sequence+trigger怎么也取不到新增数据时的主键 ...
- hibernate 7大主键生成策略详解与对象状态
一:代理主键_主键自增 1.identity 1.采用底层数据库本身提供的主键生成标识符,条件是数据库支持自动增长数据类型 2.该生成器要求在数据库中把主键定义成为自增长类型.适用于代理主键 2.in ...
- Hibernate各种主键生成策略与配置详解 - 真的很详细啊!!
1.assigned 主键由外部程序负责生成,在 save() 之前必须指定一个.Hibernate不负责维护主键生成.与Hibernate和底层数据库都无关,可以跨数据库.在存储对象前,必须要使用主 ...
- hibernate之主键生成策略
一.主键类型 1.自然主键(主键本身就是表中的一个字段,实体中一个具体的属性) 表中已经具有某字段,并且该字段具有业务含义作为主键,称之为自然主键. 例如:在person表中的身份证号,既是唯一的,又 ...
- 基于按annotation的hibernate主键生成策略
这里讨论代理主键,业务主键(比如说复合键等)这里不讨论. 一.JPA通用策略生成器 通过annotation来映射hibernate实体的,基于annotation的hibernate主键标识为@Id ...
- Hibernate标识符属性(主键)生成策略全析
数据库中的主键能够唯一识别一条记录,它可以是一个字段也可以是多个字段的组合.主键的主要作用是标识表中的一条记录,还有和其他表中的数据进行关联.数据库中的主键类型必须符合唯一性约束和非空约束.作为附加属 ...
- jpa 根据主键生成策略获取id_JPA主键生成策略
@GeneratedValue: 为一个实体类生成一个唯一标识的主键(JPA要求每一个实体Entity,必须有且只有一个主键).它有两个属性,分别是strategy和generator. genera ...
- 【Hibernate】hibernate主键生成策略与配置详解
//####################################################### **Hibernate各种主键生成策略与配置详解** //############# ...
- Hibernate各种主键生成策略与配置详解
为什么80%的码农都做不了架构师?>>> 1.assigned 主键由外部程序负责生成,在 save() 之前必须指定一个.Hibernate不负责维护主键生成.与Hibern ...
最新文章
- 微信开发者和其他服务器区别,求教微信公众号开发中两种认证技术的区别?
- android 内部类的优化
- 一套代码小程序WebNative运行的探索01
- 2020双十一实时大屏_双十一实时“战报”来了,你贡献了多少?
- LeetCode-166- Fraction to Recurring Decimal
- mysqlsql varchar类型只取前四个_Apache Doris0.12.0 发布,进入 Apache 孵化器后第四个正式版本...
- python中dict和lambda结合的小例子
- “docker exec“ requires at least 2 arguments. See ‘docker exec --help‘.
- android多线程文章,Android 多线程处理之多线程用法大集合
- toString()和String.valueOf()的区别(转)
- solidity payable_以太坊区块链搭建与使用(五)-智能合约Solidity
- Enterprise Blocks
- 【clickhouse】docker 下 搭建 clickhouse 监控
- python os.path.splitext()的用法_Python中的os.path路径模块中的操作方法总结
- 【转载】APP通用测试用例大全
- SpringBoot官方文档学习
- 华为浏览器工具箱 html修改,华为电子文档浏览器(HedEx Lite)
- hadoop-HFDS
- 3D,点云分割,不要割个寂寞
- 高速PCB设计入门概念
热门文章
- 每个java小应用程序都得继承,JAVA复习题3
- stm32 HSE HSI
- php 年月日 中文,php Date()函数输出中文年月日时分秒_PHP教程
- java计算距离_java实现计算地理坐标之间的距离
- IDEA运行VUE npm install报错:chromedriver@2.27.2 install: node install.js
- 基于Java jsp+servlet超市订单管理平台设计和实现【建议收藏】
- 服务禁止方法_Linux禁止ping以及开启ping的方法
- 爬虫之祖urlib 简易教程
- arm linux sms,基于arm处理器的手机短消息加密系统 encryption system for sms based on arm.pdf...
- A6.2021年全国数学建模竞赛C题分析-生产企业原材料的订购与运输