索引是什么
官方介绍索引是帮助MySQL高效获取数据的数据结构。更通俗的说,数据库索引好比是一本书前面的目录,能加快数据库的查询速度。
索引的优势和劣势
优势:
1、可以提高数据检索的效率,降低数据库的IO成本,类似于书的目录。 -- 检索
2、通过索引列对数据进行排序,降低数据排序的成本,降低了CPU的消耗。 --排序
-
被索引的列会自动进行排序,包括【单列索引】和【组合索引】,只是组合索引的排序要复杂一些。
-
如果按照索引列的顺序进行排序,对应order by语句来说,效率就会提高很多。
-
where 索引列 在存储引擎层 处理 索引下推 ICP
-
覆盖索引 select 字段 字段是索引
劣势:
1、索引会占据磁盘空间
2、索引虽然会提高查询效率,但是会降低更新表的效率**。比如每次对表进行增删改操作,
3、MySQL不仅要保存数据,还有保存或者更新对应的索引文件。
创建索引
-
单列索引之普通索引
CREATE INDEX index_name ON table_name(column(length)) ; ALTER TABLE table_name ADD INDEX index_name (column(length)) ;
-
单列索引之唯一索引
CREATE UNIQUE INDEX index_name ON table(column(length)) ; alter table table_name add unique index index_name(column);
-
单列索引之全文索引
CREATE FULLTEXT INDEX index_name ON table(column(length)) ; alter table table_name add fulltext index_name(column)
-
组合索引
ALTER TABLE article ADD INDEX index_titme_time (title(50),time(10)) ; 删除索引
DROP INDEX index_name ON table
查看索引
SHOW INDEX FROM table_name