动态网站制作指南 [  QQ表情  ]
[ 投票调查 ]
[ 企业邮箱 ]
[ 网站空间 ]
网络编程 | 站长之家 | 网页制作 | 图形图象 | 操作系统 | 冲浪宝典 | 软件教学 | 网络办公 | 邮件系统 | 网络安全 | 认证考试 | 系统进程
ASP源码 | .Net源码 | PHP源码 | JSP源码 | JAVA源码 | CGI源码 | VB源码 | C++源码 | Delphi源码 | PB源码 | VF源码 | 汇编 | 服务器
电脑书籍下载:程序设计书籍 | 数据库教程书籍 | 平面与多媒体书籍 | 网络通讯书籍 | 系统管理书籍 | 网络安全书籍 | 认证考试书籍
Firefox | IE | Maxthon | 迅雷 | 电驴 | BitComet | FlashGet | QQ | QQ空间 | Vista | 输入法 | Ghost | Word | Excel | wps | Powerpoint
asp | .net | php | jsp | Sql | c# | Ajax | xml | Dreamweaver | FrontPages | Javascript | css | photoshop | fireworks | Flash | Cad | Discuz!
当前位置 > 网站建设学院 > 网络编程 > 数据库 > Sybase教程
数据库:数据库教程,数据库技巧,Oracle教程,MySQL教程,Sybase教程,Access教程,DB2教程,数据库安全,数据库文摘
文章搜索服务
邮件订阅
输入你的邮件地址,
你将不会错过任何关于:
[ Sybase教程 ]的信息



本月文章推荐
.用一个实际案例讲解Sybase数据库.
.个人经验总结:Sybase数据库性能.
.利用HP磁带库轻松保护Sybase数据.
.Sybase和Oracle的互相导入.
.讲解Sybase数据库截断和清空日志.
.Sybase与Oracle数据库文件的互相.
.用Sybase advantage清除melinets.
.高性能数据仓库引擎Sybase IQ的S.
.常见数据库系统之比较 - SYBASE .
.个人经验总结:Sybase数据库的全.
.Sybase启动服务快车 打造行业服务.
.带你轻松接触Sybase ASE15.0.2性.
.教你快速掌握Sybase整库复制的具.
.SQL Server如何访问sybase数据库.
.安装Sybase后新建server时遇到的.
.Sybase程序设计中极易造成误解的.
.Sybase公司鼎力筹集善款 爱心奉献.
.ORACLE9i连接SYBASE的透明网关的.
.Sybase数据库sa密码丢失后应当如.
.使用SQL不当将会严重影响Sybase .

Oracle9i与SYBASE ASE12.5相比的几个不足

发表日期:2008-2-9 |



  
 

 

Oracle9i与SYBASE ASE12.5相比的几个不足

 

 

千千如梦 2004-7-24

 

 

Oracle9i与ASE12.5分别是世界主流数据库厂商ORACLE、SYBASE公司的主打产品,拥有相当大的市场份额。本文抛开两者之间在体系结构、技术路线上的差异,纯粹从使用者的角度出发,整理了Oracle9i与SYBASE Adaptive Server Enterprise 12.5 (简称ASE12.5)相比的几个不足,至于ASE12.5与Oracle9i相比的不足则不在本文的讨论范围。

1 不支持正则表达式:熟悉Unix/Linux及ASE12.0/12.5的人都知道正则表达式的灵活、功能强大。像“查找所有包含数字的表名称”这样的需求,在ASE12.5中极其简单:

select name from sysobjects where type=”U” and name like “%[0-9]%” (这里sysobjects相当于Oracle9i中的all_objects),而Oracle9i的实现要颇费一番周折了,一般情况下很多人都是写一个函数实现,以下就是刚学Oracle的时候写的一个实现该功能的函数:

CREATE OR REPLACE function is_number(p_str in varchar2)

return number

as

  w_char char(1);

  i      number :=1;

begin

  while  i <= length(p_str) loop

       w_char := substr(p_str,i,1);

       if w_char >='0' and w_char <='9' then

          return 1;

       end if;

    i:=i+1;

    end loop;

  return 0;

end;

/

在Oracle9i调用一个自定义的PL/SQL函数开销会很大;远不及ASE12.5的内部实现。

2  UPDATE语句的“蹩脚”,在数据库的应用中,两个表关联update是很常见的,如有如下两个表:t_a(id,name,point,…),t_b(id,point,…) id均为主键或unique index,现要实现根据id的对应关系将t_b表上point加至t_a表point。我们来看Oracle9i与ASE12.5的实现:

/** For Oracle9i **/

Update t_a a

Set   a.point=a.point+(select b.point from t_b b where b.id=a.id)

Where exists (select 1 from from t_ b where b.id=a.id)

/

/** For ASE12.0/12.5 **/

Update t_a

Set    point=a.point+b.point

From  t_a a,t_b b

Where  a.id=b.id

Go

Oracle9i的语句似乎不顾清楚、轻易误解,而且查看执行计划发现t_b表或索引扫描了2遍!ASE12.5只扫描了1遍。虽然第2遍是逻辑读,但总觉得不甘心;

有时假如t_b表较小,且id上无索引,我宁愿采用cursor方式,多次试验表明

比Create INDEX+关联UPDATE要快得多。还有就是采用Oracle9i的OLAP特性,用merge 语句来完成。

3临时表技术的比较:

 

ITEM

存储位置

DDL

数据生命周期

ORACLE9i

任何表空间

用户自己维护,表名是全局(数据库用户)唯一

Session / Transaction

ASE12.5

Tempdb库

用户create;用户drop或系统drop,表名Session级唯一

Session

 

 

 

 

 

虽然两者各有所长,但我觉得ASE12.5的实现似乎更得”临时”的精髓—在每个会话期间,“召之即来”,不用担心与别人重名,#11 #22 #aa #bb随个人喜好创建,”挥之即去”, 会话结束亦不必显式删除,由系统代劳,不必担心垃圾表存在。


 4  Count的问题还是Distinct的问题?在select 语句使用 distinct 要害字修饰以返回唯一的行集,这在统计分析、剔除重复数据尤为重要,但是有时仅想统计一个总数呢?我第一次是这样写的:

Select count(distinct a,b,c) from my_table 结果语法不对,只好修改为:

Select count(*) from ( select distinct a,b,c from my_table ) 方得以通过,心想这一定是distinct惹的祸,但随后发现distinct 被冤枉了,因为即使是:

Select count(a,b,c) from my_table 也是不行的。只能写成:

Select count(*) from ( select a,b,c from my_table )

但在ASE12.5上无论是Select count(distinct a,b,c) from my_table 还是Select count(a,b,c) from my_table 均能得出正确结果。

5  数据导入导出工具的比较:EXP/Imp在备份和恢复方面用的比较多,且受版本(高低版本、32bit/64bit)、语言影响较大,且sqlldr 只能算作导入工具,严格来说Oracle9i没有表数据的文本级的导出工具!相反,ASE12.5的bcp 的在表数据导入导出方面的很灵活,格式也很简单,很轻易做应用程序的输入。还有视图、存储过程、触发器的导出工具defncopy也很好用;至于Oracle9i,我N+1次碰到以下情况:

问:我怎么得到某个存储过程的代码啊?

答:有没有装client阿?

问:装了!

答:打开Enterprise Manager Console,登录后在方案下面找吧

……

问:怎么麻烦阿?

答:那你有没有装Toad或者PL/Develop阿,这些工具好用点

问:没有啊!

答:L

或者

问:我怎么得到某个存储过程的代码啊?

答:有没有装client阿?

问:装了,可我在主机上啊!

答:那你用sqlplus看罢,

set long 300

select text from all_source where name=’YourName’

go

问:哇,怎么麻烦阿

答:L

要是在ASE12.0

问:我怎么得到某个存储过程的代码啊?

答:用defncopy 吧

问:怎么用啊

答:我靠,这么简单!你还用问阿!J

6  联机备份:虽然Oracle9i提供了冷、热备份技术,但是与ASE12.5基于Open Server技术的联机实时备份Backup Server相比似乎逊色不少,将备份的介质直接拿到另外一台ASE12.5进行Load,很快很简单就能获得一个时效性极强的”镜像”数据库环境。而我觉得Exp/Imp比较琐碎,且限制也较多。

Oracle9i附带的命令行工具如sqlplus exp/imp sqlldr等,执行时无一例外都将输出时间、版本、版权信息,给像我这样喜欢用shell处理结果的人来说徒增不少麻烦,相比ASE12.5的isql bcp defncopy 的干净利落,是Oracle9i的无聊和”自恋”,还是埃里克森的霸气呢?

 
上一篇:ORACLE9i连接SYBASE的透明网关的配置 人气:466
下一篇:SYBASE到ORACLE连接服务器的实现 人气:342
浏览全部Oracle教程的内容 Dreamweaver插件下载 常用网页广告代码全集
  最新网站源码 最新软件下载
2008-7-24 Sablog-X v2.0 预览版
2008-7-24 帝国备份王EmpireBak 2008 正式版
2008-7-24 网趣网上购物系统时尚版 v8.2
2008-7-24 纵横B2B电子商务系统XYECS!B2B v
2008-7-24 e路小说小偷 v1.2.0723
2008-7-24 凌风美女图片站程序 v2.2
2008-7-24 TOM15电影收索程序
2008-7-24 清风信息自动采集生成系统 v1.0
2008-7-24 QQ邮箱编辑器 v1.0 (小小菜刀ASP
2008-7-19 UltraEdit 简体中文增强版 14.10
2008-7-19 CentOS 5.2 i386 LiveCD
2008-7-19 Snapture多功能相机 v1.4
2008-7-19 iAcces中文输入法 v1.0Build016
2008-7-19 Cookbook烹饪秘籍 v2.5
2008-7-19 苹果专用DVD转换工具 v1.1.59汉化
2008-7-19 Modem修复软件ZiPhone修改版04.0
2008-7-19 AgileMessenger即时通讯工具美化
2008-7-19 Sketches画图软件 v0.7b6破解版


  发表评论
姓 名: 验证码:
内 容:
[ 汉字翻译拼音 ] [ 广告代码 ] [ 符号对照表 ] [ 进制转换 ] [ 经典小工具 ] [ 个税计算 ] [ 汉字简繁转换 ] [ 普通单位换算 ] [ 公制单位换算 ]
[ 生辰老黄历 ] [ 国内电话区号 ] [ 国家代码与域名缩写 ] [ 文字加密解密 ] [ 健康查询 ] [ 万年历 ] [ 手机号码查询 ] [ ip搜索 ] [ Google PR查询 ]
业务联系 | 广告刊登 | 频道合作 | 投稿荐稿 | 联系方式 | 加入收藏 | RSS订阅
Copyright © 2000-2008 www.knowsky.com All rights reserved | 网络实名:动态网站制作指南 | 沪ICP备05001343号