MySql索引

Mysql的索引

索引是创建在表上的,是对数据库表中一列或者多列的值进行排序的一种数据结构。索引可以提高查询速度。
索引的两种存储形式:B型树(BTREE)索引和哈希(HASH)索引。
InnoDB和MyIsam储存引擎支持BTREE索引,MEMORY储存引擎支持HASH索引和BTREE索引,默认为前者。

索引的分类

1、主键索引:创建在主键上的索引
2、普通索引(辅助索引):创建在非主键上的索引
3、唯一性索引:创建在不重复字符字段上的索引,主键索引是特殊的唯一性索引
4、单列索引:创建在一个字段上的索引,只根据该字段进行索引
5、多列索引:创建在多个字段上的索引
6、空间索引:创建在空间字段上的索引(例如:具有x,y,z三个坐标的属性),MYSQL中的空间数据类型包括GEOMETRY和POINT、LINESTRING、POLYGON等。目前只有MyIsam储存引擎支持空间检索,而且检索的字段不能为空值。
7、全文索引:创建在字符数据上的索引,只支持CHAR、VARCHAR、TEXT类型的字段。搜索执行方式不区分大小写,但索引的列使用二进制排序后,可以执行区分大小写的全文索引。

索引的设计原则

1、选择唯一性索引
唯一性索引的值是唯一的,可以更快速的通过该索引来确定某条记录
2、为经常需要排序、分组和联合操作的字段建立索引
经常需要使用ORDER BY、GROUP BY、DISTINCT和UNION等字段的操作,排序操作会浪费很多时间,可以为其建立索引,有效的避免排序操作
3、为常作为查询条件的字段建立索引
某个字段经常作为查询条件,那么该字段的查询效率会影响执行效率,可以为该字段建立索引,提高表的查询效率
4、限制索引的数目
每个索引都需要占用磁盘空间,索引越多,需要的磁盘空间就越大,修改表的时候,对索引的重构和更新很麻烦
5、尽量使用数据量小的索引
如果索引的值很长,那么查询的速度就会受到影响
6、尽量使用前缀来索引
如果索引的值很长,就可以使用前缀来建立索引
7、删除不再使用或者很少使用的索引
表中的数据更新,或者删除,原有的数据可能不在需要,这时候就需要删除索引

创建索引

1、创建表的时候创建索引

创建表的时候直接创建索引,这种方式是最简单、方便的。
①创建普通索引:
在这里插入图片描述
在这里插入图片描述
②创建唯一索引:
在这里插入图片描述
创建唯一性索引,并且使用升序的方式建立
在这里插入图片描述
结果可以看到,id字段上已经建立了一个名为id_2的唯一性索引。
③创建全文索引
在这里插入图片描述
④创建单列索引
在这里插入图片描述
创建单列索引,为name建立索引,可以看出来,本来name的字段长度为10,而index_1的字段长度只有5。对于字符型的数据,可以不用查询出全部信息,只需要前缀就行。
⑤创建多列索引
在这里插入图片描述
⑥创建空间索引
在这里插入图片描述
需要注意:
PATIAL index must be NOT NUL
在所有的索引创建的时候,要注意索引名的不重复。

2、在已经存在的表上创建索引

①创建普通索引
在这里插入图片描述
②创建唯一索引
在这里插入图片描述
③创建全文索引
在这里插入图片描述
④创建单列索引
在这里插入图片描述
⑤创建多列索引
在这里插入图片描述
⑥创建空间索引
在这里插入图片描述
需要注意:space表的引擎必须为MyIsam,space字段必须为空间数据类型,而且是非空的。

3、用ALTER TABLE语句创建索引

①创建普通索引
在这里插入图片描述
②创建唯一索引
在这里插入图片描述
③创建全文索引
在这里插入图片描述
④创建单列索引
在这里插入图片描述
⑤创建多列索引
在这里插入图片描述
⑥创建全文索引
在这里插入图片描述

删除索引

DROP INDEX 索引名 ON 表名
在这里插入图片描述

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值