Guid和Sequence做主键的比较

记得A项目组是一个物流管理系统,后台采用了Oracle数据库。在系统中的核心表托运单表中,关于主键采用何种数据类型,是 sequence 还是用GUID , 大家起了争论。

从网络搜索得到的结论看,一般的意见总结为:
1. SYS_GUID()比sequence复杂;
2.SYS_GUID做主键,则表、索引存储开销多;
3.SYS_GUID索引查询比sequence慢;

小结

从实践来看, 使用SYS_GUID() 做主键的优点多于负面影响。特别是在多个数据库数据集成时,GUID 的优点显而易见.

综上所述,SYS_GUID 做主键:

SYS_GUID 比sequence 复杂有限范围的正确 :由于SYS_GUID 是RAW 类型的,做主键是,需要使用 RAWTOHEX 或者HEXTORAW 类的函数转换,若直接使用,则需要建立函数索引等。但这种复杂性往往在前端业务系统中体现不出,主键常常作为隐含的唯一ID 去标识对象,而不显示出来(或者不手工操作它,因为它无意义)。

SYS_GUID 做主键存储开销大:不需要评估系统规模:如今存储非常便宜,内存也足够大,如果2 千万条记录增加不到1.5G内存的话,当前普通的服务器已经可以承受,如果进行合理分区,则影响可以降低到极低。当然,如果您的服务器资源很紧张,那恐怕得放弃使用SYS_GUID

SYS_GUID 做主键查询比 sequence 慢 : 不正确:实践证明,二者是一样的。

 

【摘自:http://spiritfrog.iteye.com/blog/245816(更详细)】

转载于:https://www.cnblogs.com/yeshi/p/3848009.html

CAN总线BusOff恢复机制详解:快慢恢复策略在车载网络中的实战应用 本文深入解析了CAN总线BusOff恢复机制,重点阐述了快慢恢复策略在车载网络中的工程应用。通过对比NXP S32K与STM32平台的实现代码,并结合CANoe仿真与参数优化方法,为工程师提供了从理论到实战的完整解决方案,旨在提升车载网络的可靠性与功能安全。 阅读详情

相关推荐

强化学习算法案例——一个经典的走迷宫任务。

作者:禅与计算机程序设计艺术 1.简介 在强化学习(Reinforcement Learning, RL)中,有一个经典的任务——走迷宫,其原理简单易懂,但它的实际意义却深远,它让计算机学习如何通过策略网络(policy network),以最佳的方式解决复杂的任务。本文将介绍如何用强化学习解决这个经典

AI天才研究院 3178

Oracle中的:sys_guid唯一标识传统的序列sequence区别

Oracle中的:sys_guid唯一标识传统的序列sequence区别 SYS_GUID (),是Oracle 8i 后提供的函数。SYS_GUID产生并返回一个全球唯一的标识符(原始值)由16个字节组成。例如:SELECT sys_guid() from dual Oracle8i引入了SYS_GUID这个概念,它同Oracle管理员所使用的传统的序列sequence)相比具有诸...

YFSREAD的博客 1112

基于VLFM的中文指令视觉语言导航系统设计与实现

文章摘要 本文介绍了一个基于VLFM(视觉语言边界地图)的中文指令视觉语言导航系统设计与实现。该系统采用模块化架构,包含三维场景渲染、URDF机器人仿真、VLFM导航引擎、中文指令解析PyQt图形界面五大核心模块。系统支持自定义GLB场景模型URDF机器人模型,通过transformerslangchain实现中文自然语言指令解析,利用VLFM算法进行语义导航决策。技术实现上详细介绍了GLB模型加载器开发、URDF机器人控制、VLFM导航算法集成以及PyQt界面设计。该系统在Ubuntu环境下运行,依

AI的内部世界的博客 178

关于SYS_GUID()值与sequence做主的研究

最近又有朋友争论起SYS_GUIDsequence做主更合适的问题。下面我以一个案例说明一下,两者在实际应用中的情况。以下内容纯属个人研究,观点亦仅限于本案例[@more@]记得A项目组是一个物流管理系统,后台采用了Ora...

cuigu9713的博客 343

Oracle数据库生成主

oracle主       两种方法:自增主sequence,SYS_GUID()生成唯一序列。       一、自增主           创建一个表               create table test(                   NID int PRIMARY KEY,                   test1 varchar2(20),                   test2 varchar2(20)               )           再建一

ystyaoshengting的专栏 7165

guidsequence做主比较

转自:http://spiritfrog.iteye.com/blog/245816 今天上班,发现一个同事用oracle的sys_guid()来做从一个表中随机获取6条记录: select * from (select * from tablename order by sys_guid()) where rownum 看得出来是先创建guid,然后将表记录按照这个guid排序,再从中取

dreamgis的专栏 2321

guid oracle_[20180826]GUID做主.txt

[20180826]GUID做主.txt--//我个人是反对使用GUID做主的,我们有一个应用使用guid做主,而且保存的类型不是raw类型,而是转换为varchar2(36),--//中间还使用"-"分隔.重复链接的测试:https://connor-mcdonald.com/2018/08/21/gooey-guids/--//当然我个人也很矛盾,如果一个应用有许多sequence做主...

weixin_34622572的博客 232

函数sys_guid() SEQUENCE

下午的时候同事让我弄500个全球唯一的标识符只要前30位 他给我发了一个语言当: SQL> select sys_guid() from dual; SYS_GUID() -------------------------------- 7E9D8FB177F749A9B5716CA180F59134 应为我之前没用过这个函数,所以当时我一查询就楞了..这是让我一条

常语的专栏 2595

guid oracle_关于ORACLE的GUID生成

============转自=============项目中若采用oracle数据库,则主生成可以有两种方式,一是用sys_guid(),二是定义一个sequence,然后用nextval得到ID。Oracle的定义sequence例子:create sequence seq_testminvalue 10000maxvalue 99999999999999999start with 20000...

weixin_39845430的博客 360

SYS_GUID()与sequence比较

序列生成器sequence所生成的数字只能保证在单个实例里是唯一的,这就不适合将它用作并行或者远程环境里的主关字,因为各自环境里的序列可能会生成相同的数字,从而导致冲突的发生。SYS_GUID会保证它创建的标识符在每个数据库里都是唯一的。此外,序列必须是DML陈述式的一部分,因此它需要一个到数据库的往返过程(否则它就不能保证其值是唯一的)。SYS_GUID源自不需要对数据库进行访问的时间戳机器...

weixin_30338497的博客 157

guid oracle_关于ORACLE的GUID生成 | 学步园

项目中若采用oracle数据库,则主生成可以有两种方式,一是用sys_guid(),二是定义一个sequence,然后用nextval得到ID。Oracle的定义sequence例子:create sequence seq_testminvalue 10000maxvalue 99999999999999999start with 20000increment by 1cache 20cycle...

weixin_39664995的博客 259

sys_guid()传统的序列sequence比较

SYS_GUID (),是Oracle 8i 后提供的函数。SYS_GUID产生并返回一个全球唯一的标识符(原始值)由16个字节组成。在大多数平台,生成的标识符由主机标符,执行函数的进程或者线程标识符,进程或线程的一个非重复的值(字节序列)组成。 Oracle8i引入了SYS_GUID这个概念,它同Oracle管理员所使用的传统的序列sequence)相比具有诸多优势。一个序列生成器只是简单...

sylisok的专栏 450

ORACLE 生成GUID

项目中若采用oracle数据库,则主生成可以有两种方式,一是用sys_guid(),二是定义一个sequence,然后用nextval得到ID。 Oracle的定义sequence例子: create sequence seq_test minvalue 10000 maxvalue 99999999999999999 start with 20000 increment by 1...

zhou279818998的专栏 1万+

oracle主关字SYS_GUID()与sequence比较

Oracle8i引入了SYS_GUID这个概念,它同Oracle管理员所使用的传统的序列sequence)相比具有诸多优势。一个序列生成器只是简单地创建从给定的起点开始的一系列整数值,而且它被用在选择陈述式的时候自动地递增该系列。      序列生成器所生成的数字只能保证在单个实例里是唯一的,这就不适合将它用作并行或者远程环境里的主关字,因为各自环境里的序列可能会生成相同的数字,从而导致冲

岁寒松柏 3554

SYS_GUIDsequence区别

序列生成器sequence所生成的数字只能保证在单个实例里是唯一的,这就不适合将它用作并行或者远程环境里的主关字,因为各自环境里的序列可能会生成相同的数字,从而导致冲突的发生。 SYS_GUID会保证它创建的标识符在每个数据库里都是唯一的。 此外,序列必须是DML陈述式的一部分,因此它需要一个到数据库的往返过程(否则它就不能保证其值是唯一的)。 SYS_GUID源自不需要对数据库进行访问的

GAMELOFT9----纸上得来终觉浅,绝知此事要躬行 1111

SYS_GUID()与sequence比较【转】

文章转载于:http://www.cnblogs.com/BradMiller/archive/2010/11/10/1873314.html SYS_GUID()与sequence比较 序列生成器sequence所生成的数字只能保证在单个实例里是唯一的,这就不适合

Donny的专栏 1298

西安电子科技大学msp430实验室一手资料

西安电子科技大学msp430实验室一手资料 msp 430g2553 案列精讲

esp8266-透传.rar_esp8266 spi转发_esp8266 spi速度_esp8266+spi_esp8266sp

esp8266平台下的一种SPI透传方法的说明,相比于传统的串口透传,速度更快

上一篇: 未能加载文件或程序集“XXX”或它的某一个依赖项。参数错误。 (异常来自 HRESULT:0x80070057 (E_INVALIDARG))...
下一篇: 编码方式
a5306
博客等级 码龄12年 0粉丝 0原创
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值