oracle 性能优化建议小结原则一:注意WHERE子句中的连接顺序:ORACLE采用自下而上的顺序解析WHERE子句,根据这个原理,表之间的连接必须写在其他WHERE条件之前, 那些可以过滤掉最大数量记录的条件必须写在WHERE子句的末尾.尤其是“主键ID=?”这样的条件。原则二: SELECT子...
分类:
数据库 时间:
2015-06-26 12:18:35
阅读次数:
181
平时关注Oracle数据库的网友都知道,Oracle性能优化保证了Oracle数据库的健壮性。下面就此提出需要注意的两个原则。原则一:注意WHERE子句中的连接顺序:ORACLE采用自下而上的顺序解析WHERE子句,根据这个原理,表之间的连接必须写在其他WHERE条件之前, 那些可以过滤掉最大数量记...
分类:
数据库 时间:
2015-01-19 10:49:43
阅读次数:
200
位图索引是oracle数据库里除B树索引之外的另外一种索引的类型,它主要用于数据仓库或者DSS系统。在数据仓库或DSS系统中,针对某些类型的sql,用位图索引比用B树索引要快很多,这主要是位图索引实现了快捷的按位运算的缘故。位图索引的物理存储结构和普通B树索引的物理存储结构..
分类:
其他好文 时间:
2015-01-12 19:27:05
阅读次数:
189
在用分析命令对分区索引进行分析时,每一个分区的数据值的范围信息会放入Oracle的数据字典中。
Oracle可以利用这个信息来提取出那些只与SQL查询相关的数据分区。
例如,假设你已经定义了一个分区索引,并且某个SQL语句需要在一个索引分区中进行一次索引扫描。
Oracle会仅仅访问这个索引分区,而且会在这个分区上调用一个此索引范围的快速全扫描。
因为不需要访问整个索引,所以提高了查询的速...
分类:
数据库 时间:
2015-01-12 09:19:51
阅读次数:
176
oracle性能优化操作的这几篇文章,是完全可以相互结合同时运用的。而且各种方法之间相互影响,紧密联系。
这种联系既存在一致性,也可能带来冲突,当冲突发生时,需要根据实际情况进行选择,没有固定的模式。
最后决定SQL优化功力的因素就是对ORACLE基础的掌握程度了。
另外,值得注意的是:随着时间的推移和数据的累计与变化,ORACLE对SQL语句的执行计划也会改变。
比如:基于代价的优化方法...
分类:
数据库 时间:
2015-01-12 09:18:58
阅读次数:
152
前几篇博客例子中,我们创建了基于函数的索引,但是如果执行下面的查询:
select * from emp where substr(ename,1,1)=’S’;
得到的执行计划将还是(TABLE ACCESS FULL),因为只有当数据列能够等式匹配时,基于函数的索引才能生效,
这样对于这种索引的计划和维护的要求都很高。请注意,向表中添加索引是非常危险的操作,因为这将导致许多查询执行计划的...
分类:
数据库 时间:
2015-01-12 09:18:11
阅读次数:
251
和所有的秘笈一样,最后一招都会又回到起点,最后我们来讨论一下是否需要建立索引,也许进行全表扫描更快。
在大多数情况下,全表扫描可能会导致更多的物理磁盘输入输出,但是全表扫描有时又可能会因为高度并行化的存在而执行的更快。
如果查询的表完全没有顺序,那么一个要返回记录数小于10%的查询可能会读取表中大部分的数据块,这样使用索引会使查询效率提高很多。
但是如果表非常有顺序,那么如果查询的记录数大于...
分类:
数据库 时间:
2015-01-12 09:17:40
阅读次数:
178
我们常常必须基于多组数据表计算不同的聚集。例如下例通过三个独立查询:
select count(*) from emp where sal5000;
这样我们需要进行三次全表查询,但是...
分类:
数据库 时间:
2015-01-07 09:22:46
阅读次数:
159
对于复杂的Where条件组合,Where中含有多个带索引的字段,考虑用IF语句分情况进行讨论;
同时,去掉不必要的外来参数条件,减低复杂度,以便在不同情况下用不同字段上的索引。
继续“oracle 性能优化操作九”的例子,对于包含
Where (DisposalCourseFlag
(这里v_DisPosalCourseFlag为一个输入变量,取值范围可能为[NULL,0,1,2,3,4...
分类:
数据库 时间:
2015-01-07 09:22:14
阅读次数:
252
因为like参数使用的非常频繁,因此如果能够对like子句使用索引,将很高的提高查询的效率。
例:
select * from city where name like ‘%S%’;
以上查询的执行计划用了全表扫描(TABLE ACCESS FULL),如果能够修改为:
select * from city where name like ‘S%’;
那么查询的执行计划将会变成(INDE...
分类:
数据库 时间:
2015-01-07 09:22:01
阅读次数:
231