X
活动推荐

阿里云高性能云主机2折293元/年

企业级性能云服务器限时2折起
新用户5折爆款服务器会场
查看详情 293元/年
阅读模式:

mysql的四种索引类型

查看:17824  回复:0  类型:  来源:php自学网  标签 mysql 索引 全文索引

一、索引的类型

        mysql索引的四种类型:主键索引唯一索引普通索引全文索引。通过给字段添加索引可以提高数据的读取速度,提高项目的并发能力和抗压能力。索引优化时mysql中的一种优化方式。索引的作用相当于图书的目录,可以根据目录中的页码快速找到所需的内容

    主键索引:
        主键是一种唯一性索引,但它必须指定为PRIMARY KEY,每个表只能有一个主键。

alert table tablename add primary key (`字段名`)

    唯一索引:
        索引列的所有值都只能出现一次,即必须唯一,值可以为

alter table table_name add primary key (`字段名`);

    普通索引 :
        基本的索引类型,值可以为空,没有唯一性的限制。

alter table table_name add index (`字段名`);

    全文索引:
        全文索引的索引类型为FULLTEXT。全文索引可以在varchar、char、text类型的列上创建。可以通过ALTER TABLE或CREATE INDEX命令创建。对于大规模的数据集,通过ALTER TABLE(或者CREATE INDEX)命令创建全文索引要比把记录插入带有全文索引的空表更快。MyISAM支持全文索引,InnoDB在mysql5.6之后支持了全文索引

        全文索引不支持中文需要借sphinx(coreseek)迅搜<、code>技术处理中文。

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:这个值越高,说明查询低效。

分享到:
0 1

*有问题之处烦请在评论中指出非常感谢!
不是我想要的内容,继续搜索:

扫描二维码手机查看

发布评论:


登录:
  表情:
评论话题
推荐阅读:
linux rarcrack破解rar、zip和7z压缩包简单密码的工具   阅读:13391Nginx 配置文件详解   阅读:3888十张GIF让你弄懂递归等概念   阅读:5073栈和堆的区别   阅读:4158php设置cookie为HttpOnly防止XSS攻击   阅读:10519linux php7安装yaf扩展   阅读:6792crontab+shell脚本实现定时备份mysql数据库   阅读:6264linux top命令详解   阅读:7551linux php7编译安装mongodb扩展   阅读:6945比phpexcel还要简单的excel CSV 一键导入数据到数据库   阅读:4253phpexcel 超简单从数据库一键导出数据到excel教程   阅读:6267人性漫画:打工与创业的残酷区别   阅读:3882phpexcel 超简单从数据库一键导出数据到excel教程   阅读:6267纯干货,程序员面试的超实用技巧   阅读:3501php 统计网页打开耗时和脚本运行内存   阅读:5753网站局部小图片优化-base64编码图片   阅读:8050php生成二维码   阅读:4863最新centos7 搭建LNMP环境(centos7.2+php7+mysql5.7+nginx1.11+redis3.2)   阅读:9296给php7安装redis扩展库   阅读:6824小米手机端商城rem适配原理   阅读:5931mongodb设置shell开机启动脚本   阅读:7866php冒泡排序法   阅读:11734linux php7安装yaf扩展   阅读:6792mysql数据库性能的基本优化   阅读:3858面试的时候和你谈理想,是理想or入坑?   阅读:8145最新centos7 搭建LNMP环境(centos7.2+php7+mysql5.7+nginx1.11+redis3.2)   阅读:9296php 使用 smtp.php 类在线发送邮件功能   阅读:4633网站局部小图片优化-base64编码图片   阅读:8050人性漫画:打工与创业的残酷区别   阅读:3882shell发送邮件脚本   阅读:5330给 centos 7 安装桌面环境   阅读:15402centos 7.2 添加php7 的 php-fpm 开机启动   阅读:20054php+redis实现消息队列   阅读:11167TCP的三次握手(建立连接)和四次挥手(关闭连接)   阅读:2148霍金24岁博士毕业论文在线预览   阅读:4675HTTP 1.1 协议详解   阅读:7513封装php redis缓存操作类   阅读:7451centos 7搭建zabbix3.4   阅读:4938linux教程,鸟哥私房菜(pdf全集)   阅读:7447php中地址引用&的真正理解-变量引用、函数引用、对象引用   阅读:4696php连接redis   阅读:4737mysql 为什么添加索引可以提高访问速度   阅读:5080十张GIF让你弄懂递归等概念   阅读:5073mysql5.7主从同步配置   阅读:2805php 统计网页打开耗时和脚本运行内存   阅读:5753用php从1加到100的值   阅读:7194web项目高并发量网站解决方案   阅读:3772phpexcel 超简单从数据库一键导出数据到excel教程   阅读:6267web项目高并发量网站解决方案   阅读:3772php打印三角形   阅读:6407