什么是索引?
索引是再数据库表上添加的,是为了提高查询效率而存在的一种机制,一张表的一个字段可以添加一个索引,当然,多个字段也可以联合起来添加索引。索引相当于一本书的目录,通过目录可以快速找到我们需要的数据。注意MySQL中的索引需要进行排序,并且这个索引的排序和TreeSet数据结构相同,MySQL中的索引是一个B-Tree数据结构。 ==注意:在任何数据库中,主键和unique约束都会自动添加索引!!任何一张表中,一行的数据在硬盘中的存储都有一个编号(内存地址),在MySQL中,索引是一个单独的对象,不同的存储引擎以不同的形式存在!== 索引的实现原理:左小右大的二叉树,先通过索引的二叉树找到编号,通过编号找到物理地址,然后直接通过物理地址定位到具体的数据。 索引添加的条件:①、数据量非常大 ②、该字段经常出现在where的后面 ③、该字段很少进行DML操作。
#### 索引的创建和删除
-- 创建索引的语法
create index 索引名 on 表名(需要添加索引的字段);
-- 删除索引的语法
drop index 索引名 on 需要删除索引的表;
-- 查看一个SQL语句是否运用了索引进行检索
explain select* from 表名 where 条件;
索引的失效
那些会让索引失效:%开头的模糊查询、使用or的时候,or条件的两边的字段都必须有索引,不然索引失效、使用复合索引的时候没有使用左侧的列查找、在where当中索引列参加了数学运算、在where当中索引列使用了函数。
索引的分类
单一索引:一个字段上添加索引 复合索引:两个字段或多个字段添加索引 主键索引 唯一性索引 ....... 注意:唯一性比较弱的字段上添加索引用处不大,可能会存在大量的重复数据,这个时候索引就不起太大的作用。
标签:--,索引,字段,添加,MySQL,where From: https://blog.51cto.com/u_15433911/7573102