索引

作者: 我好菜啊_ | 来源:发表于2018-07-13 11:53 被阅读0次

关系中属性A上的索引是一种数据结构,它能提高在属性A上查找具有某个特定的值的元组的效率(B-树)
索引键-值:a-属性A上分量为a的元组集存放的位置
索引键可以来自关系的任何一个属性或属性组


创建索引

create index yearIndex on movies(year)
查询处理器在处理指定年份的查询时,仅对年份为指定值的movies元组进行测试
create index keyIndex on movies(title,year)
先返回满足title的再返回其中满足year的,按顺序找出满足前面的属性构成的属性子集的元组
如果对电影名的查询多于年份则用(title,year)
若对年份的查询多于电影名则用(year,title)(因为如果使用(title,year)的话,只指定year,一开始判断title的时候依然是返回全部的元组)


删除索引

drop index yearIndex


索引的选择

1.如果属性上存在索引,则为该属性指定一个值或者取值范围能极大地提高查找的执行效率
2.插入,删除,修改会变得更费时


假设关系的元组被分配在磁盘页上
检查一个元组,需要将包含它的整个磁盘页调入主存
检查一个磁盘页上所有元组花费的时间和检查它上面一个元组的时间差不多
所以主要时间花费在于把磁盘页调入主存,以及从主存把数据写回磁盘页


关系上最有用的索引是其键上的索引
1.查询中经常会为主键指定值
2最多只有一个磁盘页需要被读入主存(除了存索引本身的磁盘页)


非键属性但也有用的索引
1.该属性几乎可以看作键,没有多少元组在该属性上具有给定值
2.元组在该属性上是“聚集”的,即通过将具有该属性上公共值的元组分组到尽可能少的磁盘页里来将一个关系聚合到一个属性上


另外有没有用最终还是要看会返回多少磁盘页
比如在year上建了索引,然后相同的year不是聚集的每个磁盘页都分散的有那更不建索引是一样的


计算最佳索引p211
修改操作的开销是查询中访问索引或数据的两倍
从直观上来讲,如果某类查询非常频繁,那么就仅仅创建有助于该查询的索引


索引的自动选择

1.确定查询工作集
2.指定约束条件
3.“调优顾问”会生成一系列候选索引并对它们进行评估(典型的查询被提交给DBMS的查询优化器,查询优化器会在某候选索引集存在的假设下估算查询执行的时间)
4.提交或创建具有最小代价的索引集
在索引的选择上可以使用贪心策略

相关文章

  • MySQL索引

    MySQL索引 索引介绍 索引原理与分析 组合索引 索引失效分析 索引介绍 什么是索引索引:包括聚集索引、覆盖索引...

  • Mysql优化

    一.索引科普 主键索引 唯一索引 普通索引 单列索引 多列索引 聚簇索引 非聚簇索引 前缀索引 全文索引 二.优化...

  • Oracle 索引学习

    创建索引 标准语法 唯一索引 组合索引 反向键索引 示例 删除索引 修改索引 重建索引 联机重建索引 合并索引

  • MySQL索引

    索引的作用 查看索引 创建索引 删除索引 索引类型 强制索引和禁止某个索引

  • Pandas数据操作

    Pandas数据操作 Series索引 行索引 切片索引 不连续索引 布尔索引 DataFrame索引 列索引 不...

  • 深入理解四种数据库索引类型(- 唯一索引/非唯一索引 - 主键索

    唯一索引/非唯一索引 主键索引(主索引) 聚集索引/非聚集索引 组合索引 唯一索引/非唯一索引 唯一索引 1.唯一...

  • MYSQL索引

    mysql的4种常用索引类型:唯一索引,主键索引,全文索引,以及普通索引。 普通索引(INDEX):普通索引为索引...

  • 索引类型

    索引类型有: 主键索引; 唯一索引; 普通索引; 全文索引; 多列索引;

  • mysql 查询效率优化之 常用索引的几种类型 新手使用教程,少

    Mysql常见索引有:主键索引、唯一索引、普通索引、全文索引、组合索引(联合索引,多列索引) 一、建立的方法介绍 ...

  • MySql 数据查询优化

    1. MySQL索引类型: mysql的索引有5种:主键索引、普通索引、唯一索引、全文索引、聚合索引(多列索引)。...

网友评论

      本文标题:索引

      本文链接:https://www.haomeiwen.com/subject/nhkjpftx.html