oracle 数据库的索引长度默认30字符以内,这个长度限制可以修改大点吗?

oracle 数据库的索引长度默认30字符以内,这个长度限制可以修改大点吗?,第1张

如果你的数据块大小是8K,那么索引字段的定义长度不能超过6398,比如,你要给表上2个VARCHAR(4000)字段建组合索引,创建时会直接报错。另外索引组织表及在线重建索引(因为中间会临时创建一个索引组织表)允许的索引信息长度更小,只能是数据块大小的40%,实际中8K的数据块大小,要使用在线重建索引,那定义的长度不能超过3215。从以上可以看出,数据块大小为8K时,设计字段时如果要定义为VARCHAR(4000),那这个字段就不能考虑建立索引,因为即使能建上,也不能做在线重定义 *** 作,DBA要进行索引维护时只能停止应用,这将对系统的可用性产生较大影响。

关于ORACLE的索引长度还有一些特别的规则,比如自定义函数返回的字符定义长度固定是4000,所以要用自定义函数做函数索引需要特别注意一下,这可能会影响在线重建索引不能 *** 作。

内置函数的索引长度根据函数决定,比如UPPER这种不改变长度的就是索引字段定义的长度,SUBSTR这种会改变长度要根据函数截取长度决定。

NUMBER类型字段的长度固定是22。

DATA类型字段的长度固定是7。

索引默认是升序,如果要降序建的索引长度是字段定义长度*1.5+1。

数据库没有容量限制,表空间最大不超过初始设定值,表和字段没有容量限制,数据量太大就涉及存储效率,而各数据类型都有最大容量。例如:

CHAR 固定长度字符串 最大长度2000 bytes

VARCHAR2 可变长度的字符串 最大长度4000 bytes 可做索引的最大长度749

NCHAR 根据字符集而定的固定长度字符串 最大长度2000 bytes

NVARCHAR2 根据字符集而定的可变长度字符串 最大长度4000 bytes

DATE 日期(日-月-年) DD-MM-YY(HH-MI-SS) 经过严格测试,无千虫问题

LONG 超长字符串 最大长度2G(231-1) 足够存储大部头著作

RAW 固定长度的二进制数据 最大长度2000 bytes 可存放多媒体图象声音等

LONG RAW 可变长度的二进制数据 最大长度2G 同上

BLOB 二进制数据 最大长度4G

CLOB 字符数据 最大长度4G

NCLOB 根据字符集而定的字符数据 最大长度4G

BFILE 存放在数据库外的二进制数据 最大长度4G

ROWID 数据表中记录的唯一行号 10 bytes ********.****.****格式,*为0或1

NROWID 二进制数据表中记录的唯一行号 最大长度4000 bytes

NUMBER(P,S) 数字类型 P为整数位,S为小数位

DECIMAL(P,S) 数字类型 P为整数位,S为小数位

INTEGER 整数类型 小的整数

FLOAT 浮点数类型 NUMBER(38),双精度

REAL 实数类型 NUMBER(63),精度更高


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/9748701.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-01
下一篇 2023-05-01

发表评论

登录后才能评论

评论列表(0条)

保存