SQL
bisal(Chen Liu)
这个作者很懒,什么都没留下…
展开
-
UPDATE语句中的WHERE条件
慎用不带WHERE条件的UPDATE,或者说用UPDATE时一定要注意是否需要带WHERE条件。。。教训,谨记。。。原创 2011-08-29 15:50:04 · 8858 阅读 · 2 评论 -
传说中的“谓词越界“场景
开发环境,碰见一个谓词越界的问题,模拟这条SQL,如下所示,其中A_ID是表test的外键,并且存在索引,SELECT 1 FROM test WHERE A_ID = 6052138 AND IS_VALID = 1这张表的数据量,大约10万,SQL> select count(*) from test; COUNT(*)---------- 99044查看...原创 2018-12-25 01:26:18 · 1827 阅读 · 4 评论 -
小时制式问题
user_objects视图中,有两个字段,created和timestamp,按照官方手册,created就是对象的创建时间戳,DATE类型,timestamp是对象定义的时间戳,VARCHAR2类型,而且他的长度是19,正好存储"2018-12-27 09:31:14",显然和created含义相同,但我们创建表,发现user_objects视图检索出来的created和timesta...原创 2018-12-28 14:55:50 · 445 阅读 · 0 评论 -
Oracle违反约束数据的workaround
最近为测试做一些数据导入,其中存在一些主子表,由于种种原因,子表有些记录,外键值在主表无记录,导致数据导入过程中,无法创建外键,Failing sql is:ALTER TABLE "A" ADD CONSTRAINT "FK_A_REF_B" FOREIGN KEY ("A_ID") REFERENCES "B" ("ID") ENABLEORA-39083: Object typ...原创 2018-12-10 12:58:43 · 743 阅读 · 0 评论 -
CBO如何选择相同cost的索引
ACOUG年会杨长老的演讲中,曾提到一个问题,一条SQL语句,两种执行计划的cost值相同,CBO是如何选择执行计划? 翻译一下问题,创建测试表数据,SQL> create table z (a number, b number);Table created. SQL> begin 2 for i in 1 .. 10000 loop 3...原创 2018-12-10 12:47:44 · 414 阅读 · 0 评论 -
JDBC读取数据优化-fetch size
最近由于业务上的需求,一张旧表结构中的数据,需要提取出来,根据规则,导入一张新表结构中,开发同学写了一个工具,用于实现新旧结构的transformation, 实现逻辑简单,就是使用jdbc从A表读出数据,做了一些处理,再存入新表B中,发现读取旧表的操作,非常缓慢,无法满足要求。读取数据的示例代码,conn = getConnection();long start = Syst...原创 2018-09-17 13:22:17 · 32428 阅读 · 5 评论 -
修改表字段长度的操作,对业务是否有影响?
前两天测试同学问了一个问题,表中某一个字段,需要改一下长度,对业务是否会有影响?可能隐约之中,我们觉得没影响,但又好像有影响,究竟有何影响,我们从实验来看最科学。首先建测试表,NAME字段是VARCHAR2(10),10个字节的字符串类型,表有256万数据。我们将其长度改为20,从执行时间看,只有20毫秒,我们对上面的操作,做一下10046 trace,发现确实,首先使用LOCK以EXCLUSIV原创 2017-09-08 08:53:14 · 17834 阅读 · 0 评论 -
一个分页排序SQL查询结果集不确定的案例
前几天一位运价的兄弟提出一个关于分页排序SQL的问题,比较有意思,这里分享一下。前些日子碰巧看了杨长老这篇文章:《让SQL成为一种生活方式:认识分页查询》,以下为原文摘要: Oracle的分页查询语句有两种基本格式。第一种格式如下: select * from ( select a.*, rownum rn from (select * from table_name原创 2017-01-20 23:38:23 · 1281 阅读 · 0 评论 -
merge更新或插入同一张表
一段业务逻辑,需要先判断一条记录在数据库中是否有存在,若存在则更新该记录,若不存在则插入记录。应用之前的做法是:1、先用条件判断记录在数据库中的个数。2.1、若count(*)>0,则执行UPDATE操作。2.2、若count(*)=0,则执行INSERT操作。或1、先插入记录。2.1、若报ORA-001主键错误,则存在记录,此时执行UPDATE操作。2.2、若无报原创 2014-07-28 18:54:39 · 10221 阅读 · 0 评论 -
主外键关联删除(on delete set null和on delete cascade)
主外键关联,当删除的是父表数据,参照这些要删除的数据,Oracle有三种处理方式:1、禁止删除,也是Oracle默认方法。2、将参照要删除数据的子表对应数据置空。3、将参照要删除数据的子表对应数据删除。对于1,比较容易理解,不解释。对于2,需要使用on delete set null建立外键约束。实验:create table dept_test(d原创 2014-03-10 08:58:33 · 29329 阅读 · 0 评论 -
[Oracle]-[安装]-Cent OS安装Oracle Client
http://www.oracle.com/technology/tech/oci/instantclient/index.html下载:oracle-instantclient-basic-10.2.0.4-1.i386.ziporacle-instantclient-sqlplus-10.2.0.4-1.i386.zip先创建客户端的安装目录,这两个目录可以自定义,但配原创 2013-06-03 11:50:10 · 2379 阅读 · 0 评论 -
[Oracle]-[OCP]-申请纸质版OCP证书
从2012年8月6号开始证书以电子版为主,也可以申请要纸质的:http://education.oracle.com/certificaterequest. (这里就是申请纸质证书的入口,里面只需要输入我们的3项信息:First name,Last name以及Oracle Testing ID,这三项信息可以登录www.pearsonvue.com/oracle 点击右侧的My Acco原创 2013-06-03 11:46:22 · 5724 阅读 · 0 评论 -
[Oracle]-[sqlplus相关]-serveroutput参数
前两天同事碰到一个问题,10g版本下执行:select /*+ no_index(t1 idx_t1) */ * from t1 where n=3;select * from table(dbms_xplan.display_cursor(null,null,'advanced'));提示:PLAN_TABLE_OUTPUT----------------------原创 2013-05-11 15:52:00 · 2761 阅读 · 0 评论 -
探寻大表删除字段慢的原因
《大表删除字段为何慢?》的案例中,提到删除一张大表的字段,产生了很多等待,但是测试环境模拟的现象,看起来和生产,略有区别。由于生产环境,用的是DG架构,因此在数据库同事的协助下,利用DG备库snapshot的功能,在生产环境,真实操作了一次,虽然和主库操作,唯一不同的是,没有请求的压力,相当于停了应用,但还是能说明些问题。整个删除操作,执行时间,大约是30分钟,通过10046的trace,...原创 2019-01-25 00:20:56 · 3406 阅读 · 3 评论