数据库
首页 > 数据库> > MYSQL索引

MYSQL索引

作者:互联网

MySQL索引是什么

新华字典的  目录  相对于字典中的  内容  就类似于数据库的  索引  类似于数据库中  数据  。

MySQL索引有什么用

像上述描述一样,目录是为了快速便捷查找内容,索引也一样。加快数据检索速度

当然看待事物都是辩证性的,有优点就有缺点。

加上目录意味着要多用一些纸,分类越多消耗越多(按拼音、部首、偏旁等)。加上目录的前提下如果要在字典里新增/删除/修改一个字,对应的目录是不是也要调整。同理,索引也一样:

建立索引会占用磁盘空间的索引文件;

降低更新表的速度,如对表进行INSERT、UPDATE和DELETE。

MySQL索引分类

#普通索引
建表时:index indexname(‘字段名‘(length))
建表后:create index indexname on ’tablename’(‘字段名’(length))
Alter table tablename add index indexname(‘字段名‘(length))

#唯一索引 建表时:unique index indexname(‘字段名‘(length)) 建表后:create unique index indexname on ’tablename’(‘字段名’(length)) Alter table tablename add unique index indexname(‘字段名‘(length))
#主键索引 primary key
#全文索引 建表时:fulltext index indexname(‘字段名‘(length)) 建表后:create fulltext index indexname on ’tablename’(‘字段名’(length)) Alter table tablename add fulltext index indexname(‘字段名‘(length)) 使用:select * from tablename where match(column1,column2) against(‘xxx’,’sss’,’ddd’);查找column1column2中含xxx,sss,ddd的记录

#组合索引
建表时:index indexname(‘字段名‘(length),‘字段名‘(length))
建表后:create index indexname on ’tablename’(‘字段名’(length),‘字段名‘(length))
Alter table tablename add index indexname(‘字段名‘(length),‘字段名‘(length)

索引删除

drop index indexname on tablename

 

索引失效情况

 1、条件中使用了or

除非每个or的条件都建索引

2、遵循最左前缀规则

3、使用范围查询。以%、<、>开头或使用,其右边所有列无法使用索引

4、列类型为字符串,查询的数据必须用引号引起来,否则不使用索引

5、索引列不能是表达式或函数的一部分

标签:index,indexname,tablename,索引,length,MYSQL,字段名
来源: https://www.cnblogs.com/zhlii/p/14185972.html