随笔分类 -  SQL高级编程(调优)

摘要:oracle基于成本的优化器(cost based optimizer, CBO) 最令人沮丧的一点就是它看上去可能会不定期的改变SQL语句的执行计划的趋势.通常很难来确定执行计划为什么改变.理解计划的不稳定性oracle优化器(CBO), 它的工作本质上就是计算出获取SQL语句指定的特定数据集的最... 阅读全文
posted @ 2015-01-15 09:03 神之一招 阅读(368) 评论(0) 推荐(0) 编辑
摘要:事务的定义时一个独立的逻辑工作单元; 它由特定的一系列必须作为一个整体一起成功或失败的SQL语句组成, 每个事务都有一个很清楚的起点, 就是第一个可执行的SQL语句开始执行的时候, 以及一个确定的结束点, 当事务的工作进行了提交或回滚之后. 已经开始但还没有将其工作提交或回滚的事务是活动事务, 事务... 阅读全文
posted @ 2015-01-15 09:03 神之一招 阅读(161) 评论(0) 推荐(0) 编辑
摘要:Insert直接路径法这种方法不去查找已有块中的空间, 它直接从高水位之上开始插入数据. 直接使用的是 nologging模式, 记住默认情况下通过直接路径插入进行加载的表上的索引仍然是会产生undo 和 redo. 而表的数据因为 nologging 不会产生redo 和 undo , 仅仅是对数... 阅读全文
posted @ 2015-01-15 09:03 神之一招 阅读(213) 评论(0) 推荐(0) 编辑
摘要:半联结 和 反联结是 oracle 优化器能够选择用来在获取信息时应用的两个密切相关的联结方法(实际上是联结方法的选项)半联结IN 的半联结select /* using in */ department_name from hr.departments deptwhere department_i... 阅读全文
posted @ 2015-01-15 09:02 神之一招 阅读(344) 评论(0) 推荐(0) 编辑
摘要:广义上区分索引分为3部分: B-树索引, 位图索引, 索引组织表位图索引适用于不经常进行更新, 插入和删除的列. 例如数据仓库中的人口统计信息的性别.一般, 选择相对来说较少的数据时, 适用索引时比较正确的. 典型的基于索引的访问路径通常包含以下3步:1) 遍历索引树并在将 SQL 语句中的谓语应用... 阅读全文
posted @ 2015-01-15 09:02 神之一招 阅读(276) 评论(0) 推荐(0) 编辑
摘要:分析函数剖析分析函数具有3个基本组成部分, 分区子句, 排序子句以及开窗子句, 基本语法是:function1 (argument1, argument2, …argumentN) over ([partition-by clause] [order-by-clause][windowing-cla... 阅读全文
posted @ 2015-01-14 08:22 神之一招 阅读(326) 评论(0) 推荐(0) 编辑
摘要:关于数据的问题你如何来发现数据的存储方式呢?首先, 试着像优化器一样去思考问题. 优化器需要统计信息和实例参数值来计算计划.为了得到所需的全部数据都需要哪些表?其中有表是分区的吗? 如果有, 分区是如何定义的呢?每张表中都有哪些列?每张表中可用的索引都有哪些?每张表及其中的列和索引的统计信息都是什么... 阅读全文
posted @ 2015-01-12 15:25 神之一招 阅读(135) 评论(0) 推荐(0) 编辑
摘要:解释计划 与 执行计划的 区别随着可以得到解释计划输出的开发工具, 比如 toad 的普遍使用, 生成解释计划就变的相当简单. 而不简单的是得到执行计划.解释计划EXPLAIN PLAN 用来显示优化器为SQL语句所选择的执行计划. 你需要了解一件事, 当你得到了解释计划输出的时候, 你其实是得到了... 阅读全文
posted @ 2015-01-12 15:25 神之一招 阅读(251) 评论(0) 推荐(0) 编辑
摘要:select /*+ gather_plan_statistics */ distinct dname, decode( d.deptno, 10, (select count(*) from scott.emp where deptno = 10), 20, (select count... 阅读全文
posted @ 2015-01-12 15:24 神之一招 阅读(172) 评论(0) 推荐(0) 编辑
摘要:面向集合去思考要想成为写SQL语句的高级专家, 最困难的是一个转变就是从面相过程的思维方式转变到面相集合的思维方式.首先要停止那些一次处理一行数据的过程化步骤思维, 试着把思路转移到使用类似于 “for all”的短语上来. 例如: 如果我让你生成一个所有在公司里每个工作岗位上干了同样年数的员工的列... 阅读全文
posted @ 2015-01-10 14:40 神之一招 阅读(586) 评论(0) 推荐(0) 编辑
摘要:在 sqlplus 中可以使用 ; 或 / 来执行一条 sql 语句, 但是 / 必须要换行, 个人感觉只有那些脚本啊什么的最后一般使用 / , 其他的都使用;核心语句SELECToracle基于查询成本的优化器(cost-based optimizer, CBO)用来产生实际的执行计划. SQL ... 阅读全文
posted @ 2014-04-10 16:27 神之一招 阅读(398) 评论(0) 推荐(0) 编辑
摘要:sql 被保存在 share pool 后, 开始解析, 解析包括语句的语法, 检验及对象, 以确认该用于是否有该对象的权限, 如果这些都通过了, 接下来就要看这个语句之前是否被执行过, 如果是, oracle 将取回之前解析的信息并重用, 这就是软解析, 如果没有被执行过, 那么oracle就将执... 阅读全文
posted @ 2014-04-10 16:27 神之一招 阅读(576) 评论(0) 推荐(0) 编辑