DDS和SQL创建的表的区别
2006-07-04 09:44
316 查看
Birgitta 说:
DDS描述的PF的插入/删除速度比SQL创建的来得快,但是Read的时候来得慢.
这是因为:
DDS描述的PF是在数据Get的时候进行验证,而插入更新的时候并没有验证.
SQL创建的PF刚好相反,数据验证只发生在写,而不是读.
正常你执行的操作是读远胜于写,比例大该为80:20.
我们谈论的是关于PF内部的数据验证,而不是关于你程序的验证.
试试如下所说的:
用DDS定义一个PF,但是使用一个固定的记录长度
CRTPF FILE(MYLIB/MYBASEX) RCDLEN(10)
我们输入数字和非法的数字值(比如XYU)到这个物理文件中.
然后,创建一个DDS描述的只有一个数值型的字段的PF.
如果你拷贝上一个文件到新的文件中,并指定关键字*NOCHK(FMTOPT),看看是否正确
CPYF FROMFILE(MYLIB/BASEPF)
TOFILE(MYLIB/DDSPF)
FMTOPT(*NOCHK)
现在我们用SQL创建一个等价于DDS描述的PF的数据库,
并且重复用CPYF命令,这时候我们发现,Insert停止在错误的数字的数据中.
RPG在写入的时候并没有作任何校验,CPYF如果没有*NOCHK的选项的话会执行数据验证.
数据库对象的验证依赖于你读写的方式(Native I/O或者 SQL),并且你不能关闭数据验证或者改变它.
这就是DDS-PF和SQL-PF的架构差别.
=========
因此,我们创建表--For C/S B/S only ,如果是代码表或者一些什么条件表,就是Write/Update较少的表,我们尽量用SQL创建的,否则,我们使用DDS创建的表.
==================================
没想到后续引起了新闻组的一阵论战,其实DDS和SQL创建的表的性能并没有极大的变化,但是我记得这句话是罗彻斯特里面的一个SQL优化课程的老师也这么说过。
在他们的课程中,Navigator就是all the thing.Green Screen is passive.
DDS描述的PF的插入/删除速度比SQL创建的来得快,但是Read的时候来得慢.
这是因为:
DDS描述的PF是在数据Get的时候进行验证,而插入更新的时候并没有验证.
SQL创建的PF刚好相反,数据验证只发生在写,而不是读.
正常你执行的操作是读远胜于写,比例大该为80:20.
我们谈论的是关于PF内部的数据验证,而不是关于你程序的验证.
试试如下所说的:
用DDS定义一个PF,但是使用一个固定的记录长度
CRTPF FILE(MYLIB/MYBASEX) RCDLEN(10)
我们输入数字和非法的数字值(比如XYU)到这个物理文件中.
然后,创建一个DDS描述的只有一个数值型的字段的PF.
如果你拷贝上一个文件到新的文件中,并指定关键字*NOCHK(FMTOPT),看看是否正确
CPYF FROMFILE(MYLIB/BASEPF)
TOFILE(MYLIB/DDSPF)
FMTOPT(*NOCHK)
现在我们用SQL创建一个等价于DDS描述的PF的数据库,
并且重复用CPYF命令,这时候我们发现,Insert停止在错误的数字的数据中.
RPG在写入的时候并没有作任何校验,CPYF如果没有*NOCHK的选项的话会执行数据验证.
数据库对象的验证依赖于你读写的方式(Native I/O或者 SQL),并且你不能关闭数据验证或者改变它.
这就是DDS-PF和SQL-PF的架构差别.
=========
因此,我们创建表--For C/S B/S only ,如果是代码表或者一些什么条件表,就是Write/Update较少的表,我们尽量用SQL创建的,否则,我们使用DDS创建的表.
==================================
没想到后续引起了新闻组的一阵论战,其实DDS和SQL创建的表的性能并没有极大的变化,但是我记得这句话是罗彻斯特里面的一个SQL优化课程的老师也这么说过。
在他们的课程中,Navigator就是all the thing.Green Screen is passive.
相关文章推荐
- sql 创建表变量,临时表+表变量与临时表区别 (转)
- oracle pl/sql创建子程序时 as和is关键字的区别
- hql 和 sql 区别
- SQL中varchar和nvarchar有什么区别?
- mybatis深入理解(一)之 # 与 $ 区别以及 sql 预编译
- SQL循序渐进(4)创建表
- 在腾讯云上创建您的SQL Cluster(2)
- SQL中Truncate table、Delete与Drop table的区别
- ubuntu创建新用户命令(useradd和adduser)的使用方法和区别
- SQL中truncate table和delete的区别
- sql,sqlplus,pl/sql的区别
- Oracle SQL中的IN 和 EXSITS区别总结
- 一步一步学Linq to sql(一):创建LINQ TO SQL 类,查询表
- oracle number 和sqlserver numeric的区别
- 从SQL T-SQL PL/SQL的区别看待我的总结
- SqlSessionFactory创建SqlSession测试mybatis的sql
- PL/SQL-procedure-function-package创建
- db2 数字转换字符 oracle和db2的sql语句区别
- in和exists的区别与SQL执行效率分析
- sql之left join、right join、inner join的区别