最近因为公司项目需要,必须使用DB2,因为原来一起用Oracle MySQL的,使用了DB2才知道什么叫数据库中的垃圾,而且是臭气熏天的垃圾!
罪状之1:更改表结构超级麻烦
假设有以下一个表:
create table t1(a int,b int c int,d int);
你希望删除b,c,d新增e,f
alter table t1 drop column b;
alter table t1 drop column c;
alter table t1 drop column d;
alter table t1 add e int;
alter table t1 add f int;
这是一个再简单不过的表结构更改语句了,在DB2中一执行,到第4行居然就报错了,错误是:
引用
SQL20054N 所处的状态对该操作无效.原因码 23
查了
http://www-01.ibm.com/support/knowledgecenter/SSEPGG_9.7.0/com.ibm.db2.luw.messages.sql.doc/doc/msql20054n.html?cp=SSEPGG_9.7.0%2F2-6-27-19-45&lang=zh-cn
才知道,DB2拥有一个如果恶心的限制:
引用
对表结构更改最多只能做3次,3次后必须要求你执行reorg命令!!!
也就是说,你必须在第3和第4句之间手工加入:
alter table t1 drop column b;
alter table t1 drop column c;
alter table t1 drop column d;
reorg table t1;/*这里要你手工插入*/
alter table t1 add e int;
alter table t1 add f int;
reorg table t1;/*为了防止后续的更改出错,全体变更完成后,你还要在这里手工插入*/
这种完全可以由DB2自己内部去做的事情,居然要踢给用户手工去做,完全不顾使用者的感受,学院主义,官僚主义暴露无遗啊!
罪状之2:数据分页
mysql直接使用limit x,y 就可以实现分页了:
select * from table limit 10,20
Oracle通过子查询实现分页:
select * from (select rownum,name from table where rownum <=endIndex ) where rownum > startIndex
下面再来看看DB2的分页:
select * from ( select ROW_NUMBER() OVER( ORDER BY DOC_UUID DESC ) AS ROWNUM,t.*
from DT_DOCUMENT t ) a
看到那串神奇的ROW_NUMBER() OVER( ORDER BY DOC_UUID DESC )没有,如果你需要按序排序,DB2要求你写这个奇怪的语法。想想将一个普通的SQL转换为分页的SQL有多难啊。(幸亏Hibernate的Dialect类可以帮忙我们完成,否则会吐血三升而亡的
)
DB2的罪状,还很多啦,后续不断补充上,很欢迎大家涮涮IBM那一群群头上长角,浑身长刺的怪胎。
分享到:
相关推荐
IBM JDK 垃圾收集及存储分配技术,真是不想写了
美讯智邮件信息安全网关在 IBM x335 服务器上进行了严格的性能和压力测试,测试结果证明在双路 CPU 的 x335 服务器上能够有效的支持每秒 200 封邮件的吞吐量。作为 x335 服务器的新一带产品的 X336 服务器相对于 x...
本文描述了几种IBM JDK5的垃圾回收策略,几种策略的特点和原理,对于WAS6.1 GC调优有很大的帮助
IBM JDK5 垃圾收集策略,第 1 部分
很好用的东西!!专门针对服务器系统程序用的软件需要的看一下
IBM THINKPAD 刷号 刷机机器,机器的SN号和TYPE号都可以刷写进去.
IBM V3500开关机流程.docx
IBM红皮书IBM红皮书IBM红皮书IBM红皮书IBM红皮书IBM红皮书IBM红皮书
IBM Webpshere 8.5.0ND版自带的商业JDK,版本信息如下: java version "1.6.0" Java(TM) SE Runtime Environment (build pwa6460_26sr2ifix-20120419_02(SR2+IV19661)) IBM J9 VM (build 2.6, JRE 1.6.0 Windows ...
IBM-3D、IBM-iDataPlex、IBM-IO-Cards、IBM-Logos、IBM-Network-BNT、IBM-Network-B-Type、IBM-PDU、IBM-Racks、IBM-SAN、IBM-Server-BladeCenter、IBM-Server-FlexSystem、IBM-Server-Power、IBM-Server-Systemi、...
十几张IBM传统桌面 IBM壁纸 供IBM情节的人使用
IBM DS5020存储开关机顺序.docx
IBM5150说明图纸,(比说明书深一些)
Java连接IBM WebSphere MQ 7处理队列信息所需jar包,从安装目录直接打的包。主要包括: /com.ibm.mq.commonservices.jar /com.ibm.mq.defaultconfig.jar /com.ibm.mq.fta.jar /com.ibm.mq.headers.jar /...
IBM服务器黄灯亮解决方法IBM服务器黄灯亮解决方法IBM服务器黄灯亮解决方法
IBM POS诊断盘刷新4610打印机微码和字库
A IBM MQ client is part of the product that can be installed on its own, on a separate machine from the base product and server. You can run an IBM MQ application on an IBM MQ client and it can ...
IBM SVC软件安装和配置指南-中文版
IBMX41BIOS
mutator 线程就是分配对象的应用程序。也可以把 mutator 称为应用程序。GC 线程是内存管理的一部分,它们执行垃圾收集。