高级SQL优化(二) ——《12年资深DBA教你Oracle开发与优化——性能优化部分》
目录:
Oracle数据完整性和锁机制 索引及优化之表分析 表分析、约束及表间关系 Oracle体系结构1Oracle体系结构2 海量数据库及分区1 海量数据库及分区2 海量数据库及分区3 海量数据库及分区4 高级SQL优化(一) 高级SQL优化(二) 高级SQL优化(三) 常用优化工具 PPT和源码下载: http://sishuok.com/forum/posts/list/6365.html配套视频课程 Oracle性能优化 http://sishuok.com/product/601 海量数据库和高级SQL优化 http://sishuok.com/product/602 充分利用索引
此时使用变通写法的耗费为:0.407/2.187=1.60%! 
类型,描述b-tree索引最常最多使用的索引,其树结构与二叉树比较类似,根据ROWID快速定位所访问的行bitmap索引使用位图来管理与数据行的对应关系,适用于基数比较少的列降序索引降序索引在叶子节点中的存储从左到右是按照从大到小排序的;一般是针对逆向排序较多的查询时才使用该类型索引函数索引针对要频繁对列使用函数的索引,只有当查询语句包含该函数或者表达式时,基于函数的索引才会被调用反转索引反转了b*tree索引码中的字节,使索引条目分配更均匀,多用于并行服务器环境下,用于减少索引的竞争分区索引分区表的索引,又包括本地分区索引(本地前缀分区索引和本地非前缀分区索引)和全局索引,一般建议使用本地分区索引,因其与基表具有良好的数据均衡性和可维护性 类型方式发生条件 1.FULL INDEX SCANS逐一读取索引中的所有块,由于索引中数据已按索引键排序,因此会忽略掉排序1.ORDER BY中的列全部在该索引中时 2.ORDER BY中列的顺序满足索引中前导列的顺序时
3.使用GROUP BY且该子句中的列在索引中时2.FAST FULL INDEX SCANS只扫描索引中的数据,不会扫描表中的数据;由于索引中数据未按索引键排序,因此不能忽略掉排序当同时满足下列条件是,Oracle用FFIS替代FIS:
1.查询的所有列均包含在索引中
2.索引中的列至少一个具有not null约束3.INDEX RANGE SCANS访问选择性数据最常用的扫描方式;按顺序的对某个索引进行扫描,返回数据是升序排列的,可以使用唯一索引和非唯一索引;如果对索引列使用ORDER BY/GROUP BY则可省略排序1.在唯一索引上使用范围操作符(>、<、>=、<=、<>、BETWEEN)
2.在组合索引上使用部分列进行查询,导致查出多行4.INDEX UNIQUE SCANS扫描唯一索引或主键,要么返回一行数据要么返回0行数据1.当使用唯一索引时
2.当使用主键时5.INDEX SKIP SCANS其实质是将索引分解成多个小的子索引来提高效率,系从9i开始引入复合索引中前导列的取值是枚举的从而可以分拆为多个子索引,并且查询条件中不含前导列时
项目多个索引复合索引复合索引是多个索引的一、执行时间0.2810.1139.15%二、执行计划 1.总耗费165846427.99%2.I/O耗费156246229.58%3.时间19631.58% 转载请注明私塾在线【 http://sishuok.com/forum/blogPost/list/6414.html】