随笔分类 -  SQL优化原理

有时候索引跳跃扫描要优于范围扫描
摘要:month range seq1 a 011 a 02...1 a 10000 1 b 011 b 02...1 b 10000 1 c 011 c 02...1 c 10000 2 a 012 a 02...2 a 10000 2 b 012 b 02... 2 b 10000 2 c 012 c 阅读全文
posted @ 2020-07-30 14:44 Nathon-wang 阅读(165) 评论(0) 推荐(0)
autotrace执行计划中,统计信息详解
摘要:全表扫描是怎么扫描的? oracle最小的存储单位是block 物理上连续的block组成了extent(也就是说一个区中的所有块在物理上是连续的) 很多个extent组成了segment(一个segment中的区在物理上可能是连续的,也可能是不连续的) 全表扫描是一个区一个区的扫描的,因为一个区内 阅读全文
posted @ 2019-04-23 09:48 Nathon-wang 阅读(379) 评论(0) 推荐(0)
4、统计信息
摘要:1、什么是统计信息? 统计信息就是数据库的侦察兵,记录了表和表中一些列的一些信息,一般SQL指定执行计划的时候都要先看表的统计信息,以决定执行计划的选择。 表的统计信息一般在dba_tables中,表中列的统计信息一般在dba_tab_col_statistics select table_name 阅读全文
posted @ 2019-02-24 08:53 Nathon-wang 阅读(493) 评论(0) 推荐(0)
3、集群因子
摘要:预备知识: 索引是针对于列提出来的概念。 假设对object_id建立索引,就要将这一列的‘值’和‘rowid’一起放到索引中去。rowid就是表中某一行的物理地址(rowid=数据文件号+块号 【一个extent中rowid的值是递增的】)。 Oracle中表是堆表,表中的数据是无序的,但是索引中 阅读全文
posted @ 2019-01-28 23:21 Nathon-wang 阅读(302) 评论(0) 推荐(0)
2、直方图
摘要:什么是直方图? 直方图就是柱状图,表现了表中某一列不同键值的数据的分布情况。 (例如:性别列 男有多少行,女有多少个行) 直方图分为 频率直方图 和 等高直方图 直方图最多只能有254个捅。如果列上的唯一值多余254个,就会出现一个桶放多个值的情况。 直方图相关的影响: 1、Oracle怎么判断一个 阅读全文
posted @ 2019-01-28 00:07 Nathon-wang 阅读(682) 评论(0) 推荐(0)
1、基数与选择性
摘要:1、什么是基数(Cardinality) 基数: 列上唯一键(Distinct_key)的数量,例如性别列有两个唯一的键值,男、女,那这一列的基数就是2。 无论有多少行,性别列只有两个唯一值,基数就是2。 主键列的基数就等于总行数。 基数越高,说明这个列重复数据越少;相反基数越低,说明列的重复值越多 阅读全文
posted @ 2019-01-27 21:43 Nathon-wang 阅读(623) 评论(0) 推荐(0)