mysql 索引类型分析

mysql索引类型index type:

普通索引:NORMAL

全文索引:FULLTEXT

空间索引:SPATIAL

主键索引:UNIQUE

mysql索引方法index method:

BTREE :通过底层B Tree数据结构缩小扫描范围,底层索引进行了排序,分区,索引会携带数据在表中的“物理地址”,最终通过索引检索到数据之后,获取到关联的物理地址,通过物理地址定位表中的数据,效率是最高的。

HASH:哈希索引原理其实就是hash表,搜索时间效率O(1),搜索效率好,也意味着磁盘IO花费少,mysql底层使用的是链式哈希表,结构如下,每一个bucket就是一个个哈希桶,也就是哈希链表的头结点。哈希结构天然的需要耗费空间资源,是一种用空间换时间的做法

创建索引

添加PRIMARY KEY(主键索引)
ALTER TABLE table_name ADD PRIMARY KEY ( column )

添加UNIQUE(唯一索引)
ALTER TABLE table_name ADD UNIQUE ( column )

添加INDEX(普通索引)
ALTER TABLE table_name ADD INDEX index_name ( column )

添加FULLTEXT(全文索引)
ALTER TABLE table_name ADD FULLTEXT ( column)

添加多列索引
ALTER TABLE table_name ADD INDEX index_name ( column1, column2, column3 )

修改索引

mysql中没有真正意义上的修改索引,只有先删除之后在创建新的索引才可以达到修改的目的,原因是mysql在创建索引时会对字段建立关系长度等,只有删除之后创建新的索引才能创建新的关系保证索引的正确性;
如:将login_name_index索引修改为单唯一索引;

DROP INDEX login_name_index ON user;

ALTER TABLE user ADD UNIQUE login_name_index ( login_name );

删除索引

格式:DROP INDEX 索引名称 ON 表名;

DROP INDEX login_name_index ON user;

查询索引

格式:SHOW INDEX FROM 表名;

SHOW INDEX FROM user;

索引失效原因

1、注意一定不可以用select * … 可以看到type!=all了,说明使用了索引。
2、模糊查询的时候,第一个通配符使用的是%,这个时候索引是失效。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值