暂无图片
暂无图片
4
暂无图片
暂无图片
暂无图片

GaussDB 实操——数据库性能调优实验4

Type 字段

Type 字段说明

Type字段 意义
ALL 将遍历全表以找到匹配的行
Index index与ALL区别为index类型只遍历索引树
Range 只检索给定范围的行,使用一个索引来选择行
Index_range 表示使用了索引合并的优化方法
Ref_or_null 类似ref,可以搜索值为NULL的行
Ref 表示上述表的连接匹配条件,即哪些列或常量被用于查找索引列上的值
eq_ref 类似ref,区别就在使用的索引是唯一索引
const、system 对查询某部分进行优化,并转换为一个常量时,使用这些类型访问
NULL 在优化过程中分解语句,执行时甚至不用访问表或索引
  • NULL 类型。
EXPLAIN SELECT MIN(id) FROM subject;

gaussdb0300.png

在优化阶段分解查询语句,在执行阶段用不着再访问表或索引。

  • const 类型。
EXPLAIN SELECT * FROM teacher WHERE teacher_no = 'T2010001';

gaussdb0301.png

通过索引一次就找到了,const 用于比较 primary key 或 unique 索引,因为只匹配一行数据,所以很快。如将主键置于 where 列表中,就能将该查询转换为一个常量。

  • eq_ref 类型。
EXPLAIN SELECT subject.* FROM subject LEFT JOIN teacher ON subject.teacher_id = teacher.id;

gaussdb0302.png

唯一性索引扫描,对于每个索引键,表中只有一条记录与之匹配,常见于主键或唯一索引扫描。

  • ref 类型。
EXPLAIN SELECT subject.* FROM subject, student_score, teacher WHERE subject.id = student_id AND subject.teacher_id = teacher.id;

gaussdb0303.png

注:如果结果只有两行,请重新执行一遍,方便元数据信息采集。

非唯一性索引扫描,返回匹配某个单独值的所有行。
本质上也是一种索引访问,返回所有匹配某个单独值的行。
然而可能会找到多个符合条件的行,应该属于查找和扫描的混合体。

  • ref_or_null 类型。
EXPLAIN SELECT * FROM teacher WHERE name = 'wangsi' OR name IS NULL;

gaussdb0304.png

类似 ref,但是可以搜索值为 NULL 的行。

  • index_merge 类型。
EXPLAIN SELECT * FROM teacher WHERE id = 1 OR teacher_no = 'T2010001'

gaussdb0305.png

使用了索引合并的优化方法。

  • range 类型。
EXPLAIN SELECT * FROM subject WHERE id BETWEEN 1 AND 3;

gaussdb0306.png

只检索给定范围的行,使用一个索引来选择行,key 列显示使用了哪个索引。
一般在 where 语句中出现 between、<>、in 等的查询时会使用 range。

  • index 类型。
EXPLAIN SELECT id FROM subject;

gaussdb0307.png

当获取的数据直接通过读取索引树就可以获取时,使用 index 类型。

  • ALL 类型。
EXPLAIN SELECT * FROM subject;

gaussdb0308.png

需要遍历全表以找到匹配行。

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

文章被以下合辑收录

评论