- 浏览: 764785 次
- 性别:
- 来自: 南京
文章分类
- 全部博客 (663)
- Eclipse&MyEclipse (40)
- PHP (3)
- Java (72)
- CSS (3)
- MySQL (35)
- Oracle (68)
- Red Hat Linux (23)
- Tomcat (26)
- Oracle10gAS (1)
- Spring (28)
- MyBatis&iBatis (13)
- JS (47)
- JQuery (23)
- Editplus (2)
- 其他 (4)
- Html (15)
- SQL (5)
- Ant (2)
- Hadoop (2)
- Servlet (9)
- Windows (11)
- Flex (1)
- CentOS Linux (7)
- Microsoft SQL Server (2)
- DB2 (3)
- Mysql char 与 varchar 区别 (0)
- excel (5)
- jsp (8)
- FreeMarker (1)
- EasyUI (5)
- WebShpere MQ (1)
- Maven2 (6)
- 浏览器缓存 (2)
- visio (1)
- XML (2)
- 物联网 (1)
- Maven (3)
- JSTL (2)
- HTTP (1)
- Fourinone (1)
- IP知识 (1)
- MyBatis (1)
- 项目管理 (2)
- office2003+2007 (1)
- DOS (1)
- JProfiler (1)
- Thinpad T440p (1)
- ActiveMQ (10)
- MongoDB (5)
- Vert.x3 (1)
- Ngnix (3)
- Spark (2)
- BigData (1)
- 性能概念公式 (1)
- RocketMQ (3)
- IT名词术语 (1)
- Java编程工具 (1)
- RabbitMQ (2)
- MetaMQ (1)
- 架构 (6)
- KafkaMQ (7)
- Redis (4)
- OAuth (1)
- Gradle (1)
- CentOS (5)
- Microsoft_Toolkit (1)
- git (5)
- IntelliJ Idea (4)
- Nginx (3)
- docker (12)
- VMware (2)
- 算法 (1)
- JDBCPool (1)
- spring-cloud (7)
- netbean (1)
- 微信小程序 (2)
- CURL (2)
- Java生成二维码 (1)
- 区块链 (2)
- 机器学习 (1)
- SpringBoot (3)
- Android (9)
- 微服务架构 (1)
- Kubernetes (2)
- OpenProject (0)
- 测试 (1)
- https (1)
- 开源许可证 (1)
- ServiceMesh (2)
- NET (0)
- .NET (1)
- TEST (1)
- iOS (2)
- thymeleaf (4)
- lombok (1)
- 浏览器设置 (1)
- 富文本编辑器 (1)
- 搜索引擎 (1)
- IT常识 (1)
- UML (0)
- Axure (1)
- appstore无法联网 (0)
- apk无法安装 (1)
- SQLServer (2)
- 卸载弹窗软件 (1)
- jenkins (1)
- TortoiseGit (1)
- eureka (1)
- ajax (1)
- spyder (0)
最新评论
在设计数据库的时候,选择正确的数据类型,往往可以避免很多的问题,正确理解数据库的类型,对于存储空间规划,应用性能调整都会很有帮助,下面是我个人(gis817)的一点总结:
1、 Char
定长格式字符串,在数据库中存储时不足位数填补空格,不建议使用,会带来不必要的麻烦
a、 字符串比较的时候,如果不注意(char不足位补空格)会带来错误
b、 字符串比较的时候,如果用trim函数,这样该字段上的索引就失效(有时候会带来严重性能问题)
c、 浪费存储空间
2、 Varchar2/Varchar
不定长格式字符串,对于4000字节以内的字符串,建议都用该类型
a、 网上有说char比varchar2性能好,但是如果你有兴趣做测试的话,会发现没有区别(如果发生行迁移,可以通过pctfree来调整)
b、 充分利用存储空间
3、 Long/long raw
Oracle已经废弃,只是为了向下兼容保留着,应该全部升级到lob
Long类型有很多限制
a、 表中只能有一列long类型
b、 Long类型不支持分布式事务
c、 太多的查询不能在long上使用了
4、 Number
定义Number的方法:Number(p,s)
其中p,s都是可选的:
a、 p代表精度,默认为38
b、 s代表小数位数,取值范围-84~127,默认取值要看是否指定了p,如果制定了p,默认s为0,如果没有指定p,默认取最大值。
几个例子:
a、 Number(5,0)=Number(5) 取值范围99999~-99999
b、 Number(5,2) 取值范围999.99~-999.99
注意:其中的整数位数只有3位,小数位数有2位,按照如下方法计算:
整数位数<=p-s
小数位数<=s
如果插入123.555存储在数据库中变成123.56 (在小数的第三位上四舍五入),如果插入999.999,数据库就要抛错。
c、 Number(5,-2) 取值范围9999900~-9999900 (整数位数<=p-s,没有小数位数)
如果插入9999949存储在数据库中变成9999900(在整数的第二位上四舍五入),如果插入9999950,数据库就要抛错。
其他的数值类型都是number的衍生,底层都是number,比如integer/int完全映射到number(38)
性能相关:number是一种软实现的类型,如果需要对number做复杂的运算,建议先用cast内置函数转换number为浮点数类型
另外需要注意的一点是:number是变长类型,在计算表存储空间的时候要切记
5、 Date
Date类型是一个7字节的定长数据类型,没啥好说的,一个例子:性能a>b>c
a、Where date_colum>=to_date(’01-jan-2007’,’dd-mon-yyyy’)
and date_colum< DIV>
b、Where trunc(date_colum,’y’)=to_date(’01-jan-2007’,’dd-mon-yyyy’)
c、Where to_char(date_colum,’yyyy’)=’2007’
6、 Timestamp/timestamp with time zone/timestamp with local time zone
和date类似,只不过它另外支持小数秒和时区。语法Timestamp(n),n指定秒的小数位数,取值范围0~9。可选。
7、 Lob
Clob/blob实现是比较复杂的,这里只提提几个和性能相关的点,当然能不用lob尽量不用:
a、 一个lob字段包括lobindex和lobsegment
b、 Lob缺省可以存放在表中(表字段),条件是:
1.它的大小小于4kb
2.并且在定义的时候没有使用(disable storage inrow)字句(缺省是enable)
当lob大于4kb的时候它会被存放到lobsegment中
c、 当lob存放在表中的时候,它可以被缓存,对于它的操作效率远远高于存储在lobsegment中的lob(不用lobindex)
d、 存储在lobsegment中的lob缺省不在缓冲区缓存,对于lob的读写都是物理IO,代价非常高,所以对于大于4kb的lob字段千万不要频繁更新,效率非常低
e、 存储在lobsegment中的lob可以在定义的时候指定使用cache(默认是nocache),这对于中等大小的lob(比如几k~几十k)很有效果,较少物理IO
1、 Char
定长格式字符串,在数据库中存储时不足位数填补空格,不建议使用,会带来不必要的麻烦
a、 字符串比较的时候,如果不注意(char不足位补空格)会带来错误
b、 字符串比较的时候,如果用trim函数,这样该字段上的索引就失效(有时候会带来严重性能问题)
c、 浪费存储空间
2、 Varchar2/Varchar
不定长格式字符串,对于4000字节以内的字符串,建议都用该类型
a、 网上有说char比varchar2性能好,但是如果你有兴趣做测试的话,会发现没有区别(如果发生行迁移,可以通过pctfree来调整)
b、 充分利用存储空间
3、 Long/long raw
Oracle已经废弃,只是为了向下兼容保留着,应该全部升级到lob
Long类型有很多限制
a、 表中只能有一列long类型
b、 Long类型不支持分布式事务
c、 太多的查询不能在long上使用了
4、 Number
定义Number的方法:Number(p,s)
其中p,s都是可选的:
a、 p代表精度,默认为38
b、 s代表小数位数,取值范围-84~127,默认取值要看是否指定了p,如果制定了p,默认s为0,如果没有指定p,默认取最大值。
几个例子:
a、 Number(5,0)=Number(5) 取值范围99999~-99999
b、 Number(5,2) 取值范围999.99~-999.99
注意:其中的整数位数只有3位,小数位数有2位,按照如下方法计算:
整数位数<=p-s
小数位数<=s
如果插入123.555存储在数据库中变成123.56 (在小数的第三位上四舍五入),如果插入999.999,数据库就要抛错。
c、 Number(5,-2) 取值范围9999900~-9999900 (整数位数<=p-s,没有小数位数)
如果插入9999949存储在数据库中变成9999900(在整数的第二位上四舍五入),如果插入9999950,数据库就要抛错。
其他的数值类型都是number的衍生,底层都是number,比如integer/int完全映射到number(38)
性能相关:number是一种软实现的类型,如果需要对number做复杂的运算,建议先用cast内置函数转换number为浮点数类型
另外需要注意的一点是:number是变长类型,在计算表存储空间的时候要切记
5、 Date
Date类型是一个7字节的定长数据类型,没啥好说的,一个例子:性能a>b>c
a、Where date_colum>=to_date(’01-jan-2007’,’dd-mon-yyyy’)
and date_colum< DIV>
b、Where trunc(date_colum,’y’)=to_date(’01-jan-2007’,’dd-mon-yyyy’)
c、Where to_char(date_colum,’yyyy’)=’2007’
6、 Timestamp/timestamp with time zone/timestamp with local time zone
和date类似,只不过它另外支持小数秒和时区。语法Timestamp(n),n指定秒的小数位数,取值范围0~9。可选。
7、 Lob
Clob/blob实现是比较复杂的,这里只提提几个和性能相关的点,当然能不用lob尽量不用:
a、 一个lob字段包括lobindex和lobsegment
b、 Lob缺省可以存放在表中(表字段),条件是:
1.它的大小小于4kb
2.并且在定义的时候没有使用(disable storage inrow)字句(缺省是enable)
当lob大于4kb的时候它会被存放到lobsegment中
c、 当lob存放在表中的时候,它可以被缓存,对于它的操作效率远远高于存储在lobsegment中的lob(不用lobindex)
d、 存储在lobsegment中的lob缺省不在缓冲区缓存,对于lob的读写都是物理IO,代价非常高,所以对于大于4kb的lob字段千万不要频繁更新,效率非常低
e、 存储在lobsegment中的lob可以在定义的时候指定使用cache(默认是nocache),这对于中等大小的lob(比如几k~几十k)很有效果,较少物理IO
发表评论
-
为Orcle 创建 对标Mysql FIND_IN_SET功能的函数
2021-08-09 14:22 930-- 字段存储 以某个字 ... -
ORACLE存储过程,循环语法和游标(转)
2021-05-19 10:08 1196原作者 https://www.cnblogs.com/lg ... -
Oracle中exists替代in语句(转)
2021-05-13 13:55 713大家都知道exists的速度要比in的速度快,也知道ex ... -
各种数据库对表名长度的限制(转)
2016-05-11 15:07 2177数据库表名默认允许长度限制: SQLSERVER ... -
JDBC连接Oracle数据库(转)
2016-03-23 17:57 738Java程序访问Oracle数据库集群与非集群的不 ... -
Oracle数据库的驱动包ojdbc*.jar之间的差别(转)
2016-03-23 17:44 970classes12.jar,ojdbc14.jar,o ... -
Oracle 删除数据文件基本命令(转)
2016-03-09 17:56 1141在我们详细介绍之前,我们必须说清楚一点:Oracle不提供 ... -
Oracle 常用命令(转)
2016-03-09 12:03 434查看当前用户的缺省表空间 SQL>select u ... -
Oracle数据泵导入导出案例(转)
2016-02-18 11:13 533Oracle数据泵导入导出案例 O ... -
如何启动或关闭oracle的归档(ARCHIVELOG)模式 (转)
2016-02-17 13:35 692参考文献: http://www.eygle.com/arc ... -
电子商务平台的战略(转)
2016-02-02 15:42 629一、战略 战略,是一种从全局考虑谋划实现全局目标的规划!实现 ... -
Oracle数据泵IMPDP导入(转)
2016-02-01 16:22 859EXPDP导入 一:导入前 ... -
oracle数据泵备份(Expdp命令)[转]
2016-01-29 09:04 1071Oracle备份方式主要分为数据泵导出备份、热备份与冷备份三种 ... -
oracle 查看用户、权限、角色命令 (转)
2016-01-28 14:25 782a 查看用户、权限、角色的适用命令 1.查看所有用户: s ... -
ORA-12505, TNS:listener does not currently know of SID given in connect desc (转)
2016-01-26 13:42 960出现以上的问题是无法识别SID,解决方法如下: 1 ... -
Oracle Interval-Partition 解决Range分区大难题 (转)
2016-01-09 14:35 1096上篇博客《oracle分区》中讲了oracle的几种分区,并 ... -
Oracle 11g组合分区(转)
2016-01-06 16:52 1071一、实验目的 采用List-Range分区 ... -
oracle查看表、表字段和常用的一些命令 (转)
2016-01-06 15:05 807获取表: select table_nam ... -
sqlplus登录\连接命令、sqlplus命令的使用大全(转)
2016-01-05 18:05 2678我们通常所说的DML、DDL、DCL语句都是sql*plus ... -
Oracle11新特性——分区表功能增强 (转)
2015-12-24 09:46 736oracle11g分区表功能有所加强,新增了虚拟列分区、系统 ...
相关推荐
1. 规范化理论:在设计Oracle数据库时,遵循第一范式(1NF)、第二范式(2NF)和第三范式(3NF),以及更高层次的规范化,以减少数据冗余和提高数据一致性。 2. 数据库模式:通过创建逻辑视图(如星型模型、雪花模型...
其次,Oracle数据库10g是Oracle公司的一款企业级数据库管理系统,支持多种数据类型和高级功能,如表、视图、存储过程、触发器等。在毕业设计中,可能创建了相关的数据库表来存储企业用户信息,如用户ID、用户名、...
在这个过程中,需要考虑数据类型的选择、主键和外键的定义、以及存储过程和函数的设计,以确保数据的一致性和完整性。 进入物理设计阶段,我们关注数据库在Oracle系统中的实际实现,包括表空间的规划、索引策略、...
转换表结构时,需要检查每个字段的数据类型和长度,确保在新环境中能正确存储数据。如果不做调整,可能会导致数据丢失或无法插入。 标签“mysql oracle 数据库”表明我们将讨论两个不同的数据库系统。在Oracle到...
这部分虽然在给定内容中没有详细介绍,但通常包括命名规范、数据类型选择、SQL编写规范等内容,这些也是Oracle数据库设计中的重要组成部分。例如: - **命名规范**:规定了对象命名的规则,如表名、字段名等,以...
数据字典是数据库设计的一部分,它记录了所有数据库对象的详细信息,如字段名称、数据类型、长度、约束条件等,用于指导物理数据库的创建。 6. 数据库表的逻辑结构设计: 这一步骤涉及将E-R模型转换为具体的表...
在使用这类工具时,按照其提供的指南进行操作,确保输入正确的连接信息和选择正确的源数据库(MySQL)和目标数据库(Oracle)。 6. **测试与验证**:完成数据迁移后,务必进行详尽的测试,确保所有数据成功转移且...
(1)打开PowerDesigner,创建一个新的Model,选择Oracle数据库类型。 (2)导入Oracle数据库表结构的sql文件。 (3)选择要转换的SQL文件,PowerDesigner将自动转换为Mysql数据库表结构。 (4)选择Mysql 5.0...
了解Oracle中的数据类型是进行有效数据库设计的关键。08_Oracle数据类型.ppt将详细讲解Oracle支持的数据类型,包括数值、字符串、日期时间、二进制和对象类型等。 **管理表** 12_管理表.ppt探讨了如何在Oracle中...
逻辑设计阶段,我们将ER图转换为关系模式,即确定每个表的字段、数据类型和约束。这个阶段可能需要使用DDL(Data Definition Language)来描述。Oracle SQL Developer Data Modeler可以生成DDL脚本,帮助我们定义...
例如,选择合适的数据类型可以减少存储空间,提高查询效率;合理创建索引可以加速查询,但过多的索引可能会增加写操作的开销;表分区有助于大数据量下的查询性能提升;而存储段优化则涉及表空间分配和段空间管理,...
本课程设计案例将为你提供深入理解Oracle数据库系统及其操作的宝贵机会。以下将围绕Oracle数据库的课程设计案例展开详细的讨论: 一、Oracle数据库基础 Oracle数据库采用SQL(结构化查询语言)作为其主要的数据管理...
### Oracle数据库的表格设计 #### Oracle数据库概述与结构 Oracle数据库是业界领先的数据库...综上所述,Oracle数据库的设计不仅需要考虑逻辑结构的合理性,还需要关注物理层面的优化,以确保数据的高效存储和检索。
Oracle数据库比对工具是一款专为Oracle数据库设计的实用软件,由Delphi编程语言编写并提供源码,使得用户可以深入理解其工作原理并根据需要进行定制。在数据库管理、迁移、整合或性能优化等场景中,这样的工具能帮助...
- **异常处理**:针对可能出现的数据类型不匹配、空值处理等问题,提前在转换设计中加入相应的异常处理逻辑。 - **日志记录**:开启详细日志记录,便于后期分析数据迁移过程中可能遇到的问题及其原因。 通过上述...
1. **数据类型映射**:确保Oracle的数据类型被正确地映射到MySQL对应的类型,如NUMBER到DECIMAL,DATE到DATETIME等。 2. **字符集**:Oracle和MySQL支持的字符集可能不同,需确保字符集设置的一致性,避免数据丢失...
Oracle 数据库常用数据类型 Oracle 数据库中有多种数据类型,每种数据类型都有其特点和应用...了解 Oracle 数据库的数据类型是非常重要的,因为它可以帮助开发者正确地设计数据库 schema,提高数据的存储和检索效率。