摘要: 现有需求要求查询emp表每个部门工资最高的员工名称、薪水: 第一种实现: select ename,deptno,sal from emp where (deptno,sal) in (select deptno,max(sal) from emp group by deptno); 第二种实现: 阅读全文
posted @ 2018-05-28 19:58 王洁 阅读(276) 评论(0) 推荐(1) 编辑
摘要: 需求是:我想要创建一个存储过程,在这个存储过程里要完成两件事情,一要创建一个表,二要在这个表里添加数据; create or replace procedure ctab as i number;begin execute immediate 'create table dd as select * 阅读全文
posted @ 2018-05-26 23:14 王洁 阅读(221) 评论(0) 推荐(0) 编辑
摘要: 谈谈or过滤条件导致索引暂时失效的问题 在oracle数据库scott用户下执行查询操作,过滤条件中有【or】 select * from emp e where e.empno = 7698 or e.deptno = 20; 此时得到的执行计划是全表扫描,可是在这个表里empno字段是有索引的, 阅读全文
posted @ 2018-05-26 23:07 王洁 阅读(255) 评论(0) 推荐(0) 编辑
摘要: 今天遇到了一个问题很奇怪的问题,就是我在表关联查询时,查看执行计划,与之前实验时候走的执行计划不一样 sql:select t1.ename,t1.deptno,t2.dname from emp t1 inner join dept t2 on t1.deptno = t2.deptno; 上图是 阅读全文
posted @ 2018-05-24 10:30 王洁 阅读(132) 评论(1) 推荐(0) 编辑
摘要: 优化器在解析含表连接的的sql时,当它根据目标sql的sql文本的写法决定表连接的类型之后,接下来要做的事情之一就是决定表连接的方法。在oracle数据库中,两个表之间的表连接方法有排序合并连接(merge sort join)、嵌套循环连接(nested loop join)、哈希连接(hash 阅读全文
posted @ 2018-05-22 17:45 王洁 阅读(379) 评论(0) 推荐(0) 编辑
摘要: oracle数据库中的表连接分为内连接和外连接两种类型,表连接的类型会直接决定表连接的结果。 1.内连接(inner join)是指表连接的连接结果只包含那些完全满足连接条件的记录。对于包含表连接的目标sql而言,只要其where条件中没有写那些标准sql中定义或者oracle中自定义的表示外连接的 阅读全文
posted @ 2018-05-21 18:49 王洁 阅读(482) 评论(0) 推荐(1) 编辑
摘要: 初接触执行计划,做练习时执行sql(如图一) 图一: 查看其执行计划(如图二) 图二: 看到上面这个执行计划用到merge sort join(排序合并联合查询),刚开始没有理解为什么这条执行计划里还有sort join,emp表里deptno字段不是已经有索引了么,为什么这里还要用到排序,经过思索 阅读全文
posted @ 2018-05-19 12:51 王洁 阅读(418) 评论(0) 推荐(0) 编辑