oracle sql优化
文章平均质量分 77
人生没有后悔
这个作者很懒,什么都没留下…
展开
-
oracle CBO优化器何时会选择全表扫描
全表扫描将读取高水位线(HWM)之下的所有数据块从数据文件读到缓冲区,然后读取每项行数据,看是否满足WHERE子句过滤条件。当Oracle执行全表扫描时会按顺序读取每个块且只读一次,如果能够一次读取多个块,可以有效的提高效率,初始化参数DB_FILE_MULTIBLOCK_READ_COUNT用来设置在一次I/O中可以读取多少个数据块。通常我们认为应该避免全表扫描,但是在检原创 2013-11-02 19:16:54 · 988 阅读 · 0 评论 -
讨论B树索引中的 is null/is not null
为什么在查询中使用IS NULL 或IS NOT NULL同样会限制索引的使用简答的说因为索引键值不会存储空值Oracle的CBO并不会因为SQL语句中指定了IS NOT NULL或IS NULL操作就不再使用索引。CBO选择索引的条件只有正确性和代价,只要满足这两个条件就可以了。测试案例以dba_objects表的数据建一个测试表为T create table原创 2013-11-02 15:04:22 · 1357 阅读 · 0 评论 -
组合索引
组合索引(concatenated index):由多个列构成的索引,创建组合索引create index idx_detp on detp(col1,col2,col3,....),则我们称idx_emp索引为组合索引。在组合索引中有一个重要的概念:引导列(leading column),在上面的例子中,col1列为引导列。当我们进行查询时where 限制条件必须有引导列.使原创 2013-11-02 11:19:49 · 4306 阅读 · 0 评论 -
利用dbms_stats收集统计信息(待续)
统计收集的权限普通用户必须有execute_catalog_role权限grant execute_catalog_role to hr;grant connect,resource,analyze any to hr;统计收集的时间考虑当参数STATISTICS_LEVEL设置为TYPICAL或者ALL,系统会在夜间自动收集统计信息。表统计;统计表的行原创 2013-11-04 22:50:26 · 1391 阅读 · 0 评论 -
索引跳跃扫描
从Oracle9i开始,索引跳跃式扫描特性可以允许优化器使用组合索引,即便索引的前导列没有出现在WHERE子句中。索引跳跃式扫描比全索引扫描要快的多SQL> create table t as select * from all_objects;Table created.SQL> select count(*) from t; COUNT(*)原创 2013-11-13 22:20:25 · 1917 阅读 · 0 评论