|
原帖由 newkid 于 2008-12-2 23:26 发表 ![]()
几天不见你露面,又做新产品出来了?
"可是那个insert into语句有什么诱人之处吗?我是烦死了,不写更好,我不怕人说没技术含量。"
当然有,INSERT摆在那里,以后数据出了错,很容易追踪到是从哪里进来的。隔着你的DAU, 这个追踪就困难了些。
INSERT还有更诱人的:我们可以INSERT ... SELECT...(从一个复杂的查询获取数据,有这个就用不着你的DAU_copy了)
还可以INSERT ALL, INSERT FIRST, MERGE INTO, ...
哪一种都比你的C更高效,因为数据从来没有离开数据库。
紧锣密鼓的搞这个东西,来到少了。
实际上我是边做DEMO边改进,现在要做DEMO和培训教材、文档等。
你这个问题我是料到的。实际上在我们的系统里肯定是我的方法最优。
程序太长,不便上传。大致过程如此:
读TUXDEV,要验证很多东西,如CA,许可权限,交接班参数,终端属性、票据参数等等,
然后读TUXUSER,验证口令,唯一性,权限属性等等。
经过一些其他认证处理,才形成会话上下文。那段程序就是这最后一步。
既然数据都已经在内存,而且是加工后的数据,当然不能简单的:
insert into TUXCONTEX select TUXDEV
再
update TUXCONTEX select TUXUSER
至少这是两次IO吧?我一次就够了。
至于调试,这个系统以调试、优化方便为特征。
例如:
在PRO*C里:
insert into table values(?,?,?,?,?,?,?)
或
insert into table values(:a,:b,:c,:d,:e)
出现一个值越界或格式错,你能看到什么?
我的日志里就会出现一个完整的,带值的语句,容易分析,而且可以直接粘到sqlplus里执行。
[ 本帖最后由 yulihua49 于 2008-12-3 09:17 编辑 ] |
|