1、索引的类型 mysql
mysql索引的四种类型:主键索引
、惟一索引
、普通索引
和全文索引
。经过给字段添加索引
能够提升数据的读取速度
,提升项目的并发能力和抗压能力。索引优化
时mysql中的一种优化方式。索引的做用至关于图书的目录
,能够根据目录中的页码快速找到所需的内容
。算法
主键索引:
主键是一种惟一性索引,但它必须指定为PRIMARY KEY
,每一个表只能有一个主键。sql
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(`字段名`);
2、查看表的全部索引和删除mysql索引
#查看: show indexes from `表名`; #或 show keys from `表名`; #删除 alter table `表名` drop index 索引名;
3、索引的机制优化
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: 字段内容不是频繁变化
。spa