05 2018 档案
摘要:遇到这样一个问题:客户查询交易要求实现按照姓名实现模糊查询,单单在姓名简历索引不能解决问题,因为这种百分号在最前面的like条件是没法走索引的,但是同时我们也知道对于有百分号的like条件,如果百分号在like条件的最后面,则这种情况下是可以走索引的。那么能不能实现在不改变上述sql含义的情况下把百
阅读全文
摘要:子查询展开(subquery unnesting)是优化器处理带子查询的目标sql的一种优化手段,它是指优化器不再将目标sql中的子查询当做一个独立的处理单元来单独执行,而是将该子查询转换为它自身和外部查询之间等价的连接。如果子查询没有展开,那么这种情况下该子查询就会在其执行计划的最后一步才被执行,
阅读全文
摘要:在oracle服务器用sys用户登录时报错ora-00119,ora-00132,如下图 看报错是需要修改参数文件network registration模块的配置信息 第一步:查看init.ora.418201831545文件,找到报错信息中提到的'LISTENER_ORCL',如下图 第二步:在
阅读全文
摘要:现有需求要求查询emp表每个部门工资最高的员工名称、薪水: 第一种实现: select ename,deptno,sal from emp where (deptno,sal) in (select deptno,max(sal) from emp group by deptno); 第二种实现:
阅读全文
摘要:需求是:我想要创建一个存储过程,在这个存储过程里要完成两件事情,一要创建一个表,二要在这个表里添加数据; create or replace procedure ctab as i number;begin execute immediate 'create table dd as select *
阅读全文
摘要:谈谈or过滤条件导致索引暂时失效的问题 在oracle数据库scott用户下执行查询操作,过滤条件中有【or】 select * from emp e where e.empno = 7698 or e.deptno = 20; 此时得到的执行计划是全表扫描,可是在这个表里empno字段是有索引的,
阅读全文
摘要:今天遇到了一个问题很奇怪的问题,就是我在表关联查询时,查看执行计划,与之前实验时候走的执行计划不一样 sql:select t1.ename,t1.deptno,t2.dname from emp t1 inner join dept t2 on t1.deptno = t2.deptno; 上图是
阅读全文
摘要:优化器在解析含表连接的的sql时,当它根据目标sql的sql文本的写法决定表连接的类型之后,接下来要做的事情之一就是决定表连接的方法。在oracle数据库中,两个表之间的表连接方法有排序合并连接(merge sort join)、嵌套循环连接(nested loop join)、哈希连接(hash
阅读全文
摘要:oracle数据库中的表连接分为内连接和外连接两种类型,表连接的类型会直接决定表连接的结果。 1.内连接(inner join)是指表连接的连接结果只包含那些完全满足连接条件的记录。对于包含表连接的目标sql而言,只要其where条件中没有写那些标准sql中定义或者oracle中自定义的表示外连接的
阅读全文
摘要:初接触执行计划,做练习时执行sql(如图一) 图一: 查看其执行计划(如图二) 图二: 看到上面这个执行计划用到merge sort join(排序合并联合查询),刚开始没有理解为什么这条执行计划里还有sort join,emp表里deptno字段不是已经有索引了么,为什么这里还要用到排序,经过思索
阅读全文