索引
其实资料库中的资料是按页存放的
其实索引也是按页存放的
所以本质上索引也占硬碟空间(以最小的消耗,换取最大的利益)
索引是一种有效组合资料的方式!为快速查询到指定记录做铺垫
目的就是快速或者某个记录!提高了资料库的检索速度!
作用:
大大提高资料库的检索速度
改善资料库效能
MySQL 索引储存型别分类
01.B-树索引:InnoDB,MyISAM 均支援
02. 杂凑索引
其实索引是把双刃剑(利弊共存),如果使用不当,反而会降低索引效能
主键:加快检索资料/唯一标识
常用索引型别:
01. 普通索引:允许在定义为索引的列中 出现 重复值和空值!
02. 唯一索引:索引列不允许出现重复值,但是可以出现一个空值!
03. 主键索引:建立主键的时候,系统会预设建立一个主键索引!唯一!不能为空!
04. 复合索引:将我们的多个列组合起来!(name,sid)姓名和身份证号!
05. 全文索引:允许值的全文查询!允许空值和重复值!适合在一个内容比较多的列!text!
06. 空间索引:对空间资料型别的列建立的索引
■按照下列标准选择建立索引的列
频繁搜寻的列
经常用作查询选择的列
经常排序、分组的列
, 经常用作连线的列 (主键/外来键)
■请不要使用下面的列建立索引
仅包含几个不同值的列
表中仅包含几行
Eg:
—  查询指定表的索引
SHOW INDEX FROM student;
TABLE: 索引所在的表
Non_unique: 索引是否唯一  0: 唯一  1:不唯一
key_name:索引名称
seq_in_index: 该列在索引中的位置
column_name: 定义所用的列名称
null:该列是否为空
index_type: 索引型别
—  给姓名增加 普通索引
CREATE  INDEX index_studentName
ON student(studentName);
— 给学生姓名和身份证号 增加 组合索引
CREATE INDEX index_name_sid
ON student(studentName,identityCard)
—  删除索引
DROP INDEX index_name_sid ON  student;
DROP  INDEX index_studentName ON  student;
—  建立索引的原则
01. 经常被查询的列
02. 经常用作选择的列
03. 经常排序,分组的列
04. 经常用作连线的列(主键/外来键)
使用索引时的注意事项:
01. 查询时减少使用*返回全部的列,不要返回不需要的列!
02. 索引尽量要少,在位元组数小的列上建立索引!
03.where 字句中有多个条件表示式的时候,包含索引的列要放在其他表示式之前!
04. 在 order by 的字句中避免使用表示式!