索引
来源:互联网 发布:剑三成女捏脸数据 编辑:程序博客网 时间:2024/06/05 15:57
对于一些对的数据库还不太清楚的同胞们,应该对索引也不是很了解吧,下面我们就介绍一下索引的基本的一些知识
1、什么是索引
索引顾名思义就是表中所有记录的搜索引导,就好像是书的目录一样,可以引导我们去找到我们想要找的内容。
2、索引的内部结构
B树结构,就是一种树状结构。各个节点中保存着符合关键字以及指针组成的数组。指针当然是确定数据位置的信息,节点就是由这些指针相互关联起来。
最上层的节点被称为根节点,最下层的节点被称为叶子节点,两者之间的节点被称为中间节点。
B树结构一个显著的特征是从根节点到各个叶子节点的距离相等。这样,检索然和值时经过相同数目的节点,能提高检索效率。
B树检索的过程一般是在根节点中的各个值进行比较,发现匹配的中间节点,再和中间节点进行匹配,比较,随后就去检索叶子节点,取出对应的指针,就是检索的记录。
3、索引的设置与分析
创建索引时使用CREATE INDEX 命令,CREATE[UNIQUE] INDEX 索引名 on 表名(列名)
使用SHOW INDEX 命令来显示表中所有创建完成的索引信息,SHOW INDEX FROM 表名;
我们输入命令以后,会查询出下面的这些内容,然后和大家一一介绍一下查询出来的内容
Table:对象表名
Non_unique:是否允许重复(1:许可,0:禁止)
Key_name:索引名
Seq_in_index:索引内放入域序号(从1开始)
Column_name:域名
Collation:排序(A:升序,Null:不排序)
Cardinality:索引内的非重复值的数目
Sub_part:作为索引部分的域内的字符数
Packed:关键字的压缩方式
Null:是否语序为Null
Index_type:索引的类型
Comment:备注
4、创建多列构成的复合索引及唯一性索引
复合索引:create index 索引名 On 表名 (列名,……)
唯一性索引:create unique index 索引名 on 表名(列名)
在创建唯一性索引时如果指定lUNIQUE关键字,则可创建不可重复的索引,称为唯一性索引。对特定的列创建唯一性索引,相当于对该列追加了唯一性的制约,设定了唯一性索引,如果插入相同内容时系统就会给出错误提示。在生成唯一性索引时,如果列中已经含有重复的数据,那么创建唯一索引失败。
确认索引的使用情况:EXPLAIN调查对象select 语句。
explain查询出内容的详解
5、无法使用索引的情况
1)进行后方一致/部分一致检索的场合
2)使用了IS NOT NULL、比较运算符的场合
3)队列使用了运算/函数的场合
4)符合索引的第一列没有包含在WHERE条件语句中的场合