音乐吧 - www.52290.com

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 2234|回复: 0

mysql的四种索引类型

[复制链接]

1056

主题

1090

帖子

1万

积分

管理员

Rank: 9Rank: 9Rank: 9

音乐币
101
贡献
537
金钱
4461
威望
2120
相册
1

推广达人宣传达人突出贡献荣誉管理最佳新人活跃会员

QQ
发表于 2020-11-3 13:31:48 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?注册

x
一、索引的类型

        mysql索引的四种类型:主键索引、唯一索引、普通索引和全文索引。通过给字段添加索引可以提高数据的读取速度,提高项目的并发能力和抗压能力。索引优化时mysql中的一种优化方式。索引的作用相当于图书的目录,可以根据目录中的页码快速找到所需的内容。
    主键索引:
        主键是一种唯一性索引,但它必须指定为PRIMARY KEY,每个表只能有一个主键。
alert table tablename add primary key(`字段名`)    唯一索引:
        索引列的所有值都只能出现一次,即必须唯一,值可以为空。

alter table table_name add unique index(`字段名`);#alter table table_name drop index `字段名` , add unique index(`字段名`);#删除旧索引再添加    普通索引 :
        基本的索引类型,值可以为空,没有唯一性的限制。

alter table table_name add index(`字段名`);    全文索引:
        全文索引的索引类型为FULLTEXT。全文索引可以在varchar、char、text类型的列上创建。可以通过ALTER TABLE或CREATE INDEX命令创建。对于大规模的数据集,通过ALTER TABLE(或者CREATE INDEX)命令创建全文索引要比把记录插入带有全文索引的空表更快。MyISAM支持全文索引,InnoDB在mysql5.6之后支持了全文索引。
        全文索引不支持中文需要借sphinx(coreseek)或迅搜技术处理中文。
alter table 表名 add FULLTEXT(`字段名`);

二、查看表的所有索引和删除
#查看:show indexes from `表名`;#或show keys from `表名`;#删除alter table `表名` drop index 索引名;

三、索引的机制
1.为什么我们添加完索引后查询速度为变快?
    传统的查询方法,是按照表的顺序遍历的,不论查询几条数据,mysql需要将表的数据从头到尾遍历一遍
    在我们添加完索引之后,mysql一般通过BTREE算法生成一个索引文件,在查询数据库时,找到索引文件进行遍历(折半查找大幅查询效率),找到相应的键从而获取数据

2.索引的代价
    2.1创建索引是为产生索引文件的,占用磁盘空间
    2.2索引文件是一个二叉树类型的文件,可想而知我们的dml操作同样也会对索引文件进行修改,所以性能会下降

3.在哪些column上使用索引?
    3.1较频繁的作为查询条件字段应该创建索引
    3.2唯一性太差的字段不适合创建索引,尽管频繁作为查询条件,例如gender性别字段
    3.3更新非常频繁的字段不适合作为索引
    3.4不会出现在where子句中的字段不该创建索引

总结: 满足以下条件的字段,才应该创建索引.
a: 肯定在where条经常使用 b: 该字段的内容不是唯一的几个值 c: 字段内容不是频繁变化。



四、查看索引的使用情况
show status like '%Handler_read%' ;handler_read_key:这个值越高越好,越高表示使用索引查询到的次数。  

handler_read_rnd_next:这个值越高,说明查询低效。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|小黑屋|手机版|Archiver|版权声明|001科技| 音乐吧 52290 ( 桂ICP备2021006182号 )

GMT+8, 2024-12-22 09:11 , Processed in 0.042972 second(s), 25 queries .

Powered by Discuz! X3.4

© 2001-2023 07726.Com Inc.

快速回复 返回顶部 返回列表