为什么添加索引后查询速度会变快?
在我们添加完索引之后,mysql一般通过BTREE算法生成一个索引文件,在查询数据库时,找到索引文件进行遍历(折半查找大幅查询效率),找到相应的键从而获取数据
索引的代价:
1. 创建索引是为产生索引文件的,占用磁盘空间
2. 索引文件是一个二叉树类型的文件,可想而知我们的dml操作同样也会对索引文件进行修改,所以性能会下降
1,Mysql添加索引基础语法:
ALTER TABLE <表名> ADD INDEX (<字段>);
2.mysql索引类型
1.添加PRIMARY KEY(主键索引:当一张表,把某个列设为主键的时候,则该列就是主键索引)
mysql>ALTER TABLE `table_name` ADD PRIMARY KEY ( `column` )
2.添加UNIQUE(唯一索引)
mysql>ALTER TABLE `table_name` ADD UNIQUE ( `column`)
3.添加INDEX(普通索引:普通索引一般是在建表后再添加的)
mysql>ALTER TABLE `table_name` ADD INDEX index_name ( `column` )
4.添加FULLTEXT(全文索引:全文索引主要针对文本文件,比如文章,标题,全文索引只有MyISAM有效(mysql5.6之后InnoDB也支持了全文索引)
mysql>ALTER TABLE `table_name` ADD FULLTEXT ( `column`)
备注:
1. 在mysql中fulltext 索引只针对 myisam生效
2. mysql自己提供的fulltext针对英文生效->sphinx(coreseek)技术处理中文
3. 使用方法是 match(字段名..) against(‘关键字’)
5.添加多列索引
mysql>ALTER TABLE `table_name` ADD INDEX index_name ( `column1`, `column2`,`column3` )
6.索引查询
show indexes from table_name;
show keys from table_name;
7.删除索引
alter table table_name drop index 索引名;
8.会造成索引失效的几种情况: