《数据库索引设计与优化》---第3章 SQL处理过程
1、谓词:
a,where子句 由一个或多个谓词(搜索参数)组成;
b,谓词: 条件表达式、真值表达式;
2、优化器及访问路径:
a,优化器:
2.1、在 SQL真正被执行之前,优化器 先确定 如何访问数据(使用哪个索引、索引的使用方式、是否需使用辅助式随机读...);
3、索引过滤及过滤列:
3.1、where子句中,从 开头到结尾 检查索引列:
a,如果 有一个简单 的谓词与索引对应,则 索引列匹配;
b,如果 没有,则 索引列不匹配;
c,如果 第一个谓词 是 范围谓词,则 剩余的索引列不匹配;
eg:索引 : A,B,C,D where子句: where A= and B> and C=;
4、访问路径术语:
4.1、使用 访问路径 描述 数据访问的方式;
使用 执行计划 描述 DBMS提供的Explain工具产生的输出结果;
5、监控优化器:
5.1、当发现一个慢SQL时,首先被怀疑的对象是 优化器(优化器选择了错误的访问路径);
5.2、关系型数据库 通常会 提供一个 用于解释 优化器决定使用某个访问路径的原因 工具(Explain);
6、优化器助手:
6.1、统计信息:
如果 优化器 进行成本估算 使用的统计信息不完整,那么优化器很容易做出错误的决定;
6.2、Fetch调用次数:
如果 不需要 所有的记录集合,可以设置 仅Fetch n行;
7、优化器何时确定访问路径:
8、过滤因子:
8.1、过滤因子 描述 谓词的选择性 (满足表中谓词条件的记录行数 所占 比例);
平均过滤因子:city=1/不同city个数;
特定值过滤因子:city="hangzhou"
9、组合谓词过滤因子:
9.1、eg:组合谓词 city= and name=;
如果 组合谓词 列city、列name 没有相关性,组合谓词的过滤因子 city过滤因子*name过滤因子;