索引的概念

Posted labixinxinyexiangyouxiaobai

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了索引的概念相关的知识,希望对你有一定的参考价值。

索引是定义在存储表(Table)的基础之上,有助于无需检查所有记录而快速定位所需记录的一种辅助存储机构,由一系列存储在磁盘上的索引项(index entries)组成,每一索引项又由两部分构成:索引字段和行指针

存储索引项的文件为索引文件,存储表称为主文件。

索引的存在与否不改变存储表的物理存储结构,其目的是可以明显提高存储表的访问速度

索引文件组织方式有两种:

排序索引文件:按索引字段值的某一顺序组织存储

散列索引文件:依据索引字段值使用散列函数分配散列桶的方式存储。

(主文件组织有堆文件、排序文件、散列文件、聚簇文件等)

索引字段的值可以是Table中的任何一个属性的值或者多个属性值的组合值。

索引文件比主文件很多,通过检索一个小的索引文件(可全部装载进进内存),快速定位后,再有针对性的读取非常大的主文件中的有关记录。

索引技术应用使检索效率大幅度提高,但同时也增加了存储空间、使维护负担加重(要同时维护主文件和索引文件)

衡量索引性能好坏

访问时间、插入时间、删除时间、空间负载、支持存取的有效性(比如:支持的是属性的限定值还是支持属性的限定范围的值)

对经常出现在检索条件、连接条件、分组计算条件中的属性可建立索引。

SQL语言关于索引

1.基本知识

当定义Table后,如果定义了主键,则系统将自动创建主索引,利用主索引对Table进行快速定位、检索与更新操作。

当索引被创建后,无论是主索引还是用户创建的索引,DBMS都将自动维护所有的索引

当Table被删除后(drop table),定义在该Table上的所有索引将自动被撤销

2.创建和维护索引的SQL语句

创建索引:

CREATE [UNIQUE] INDEX indexname

              ON tablename ( colname[asc|desc] ...);

【一般默认是asc,表示从小到大排序;desc表示从大到小排序】  

示例:在student表中创建一个基于Sname的索引

create index idxSname on student(sname);

示例:在student表中创建一个基于Sname和Sclass的索引

create index idxSnamcl on student(sname,sclass);

示例:撤销用户创建的索引

drop index indexname;

 

以上是关于索引的概念的主要内容,如果未能解决你的问题,请参考以下文章

Mysql(10)—索引的概念以及MySQL七种索引类型

数据库系统概念笔记——第十一章:索引与散列

索引的概念

MySQL 索引(概念)

ES系列基本概念

Elasticsearch核心技术--- 基本概念(IndexTypeDocument集群节点分片及副本倒排索引)