2019.6.11_MySQL进阶一:索引
Posted huainanhai
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了2019.6.11_MySQL进阶一:索引相关的知识,希望对你有一定的参考价值。
所谓索引就是为特定的mysql字段进行一些特定的算法排序,比如二叉树的算法和哈希算法,哈希算法是通过建立特征值,然后根据特征值来快速查找。MySQL索引的建立对于MySQL的高效运行是很重要的,索引可以大大提高MySQL的检索速度。
索引分单列索引和组合索引。单列索引,即一个索引只包含单个列,一个表可以有多个单列索引,但这不是组合索引。组合索引,即一个索引包含多个列。
创建索引时,你需要确保该索引是应用在 SQL 查询语句的条件(一般作为 WHERE 子句的条件)。
实际上,索引也是一张表,该表保存了主键与索引字段,并指向实体表的记录。
上面都在说使用索引的好处,但过多的使用索引将会造成滥用。因此索引也会有它的缺点:虽然索引大大提高了查询速度,同时却会降低更新表的速度,如对表进行INSERT、UPDATE和DELETE。因为更新表时,MySQL不仅要保存数据,还要保存一下索引文件。
建立索引会占用磁盘空间的索引文件。
一、索引的类型
1.UNIQUE唯一索引
不可以出现相同的值,可以有NULL值。
2.INDEX普通索引
允许出现相同的索引内容。
3.PRIMARY KEY主键索引
不允许出现相同的值,且不能为NULL值,一个表只能有一个primary_key索引。
4.fulltext index 全文索引
上述前三种索引都是针对列的值发挥作用,但全文索引,可以针对值中的某个单词,比如一篇文章中的某个词,然而实际效用低下,因为只有myisam以及英文支持,并且效率让人不敢恭维。
二、索引的创建
索引的创建方法有3种:
1.直接打开设计表,在索引栏目下添加索引。
2.CREATE INDEX,可对表增加普通索引或UNIQUE索引。
--例:只能添加这两种索引,不能添加主键索引和全文索引
CREATE INDEX index_name ON table_name (column_list)
CREATE UNIQUE INDEX index_name ON table_name (column_list)
eg:CREATE INDEX idx_ename ON emp(ename)
3.ALTER TABLE,适用于表创建完毕之后再添加。
ALTER TABLE 表名 ADD 索引类型 (unique,primary key,fulltext,index)[索引名](字段名)
ALTER TABLE table_name ADD INDEX index_name (column_list) -- 索引名,可要可不要;如果不要,当前的索引名就是该字段名。
eg:ALTER TABLE dept ADD INDEX idx_deptno (deptno) #普通索引,索引名为idx_deptno
ALTER TABLE dept ADD INDEX(deptno) #普通索引,索引名默认为deptno
ALTER TABLE table_name ADD UNIQUE (column_list) #唯一索引
ALTER TABLE table_name ADD PRIMARY KEY (column_list) #主键索引
eg:ALTER TABLE dept ADD PRIMARY KEY idx_deptno(deptno)
ALTER TABLE table_name ADD FULLTEXT KEY (column_list) #全文索引,一般不用
三、索引的删除
1.直接打开设计表,在索引栏目下删除索引。
2.DROP INDEX:
DROP INDEX index_name ON table_name
eg:DROP INDEX deptno ON dept
3.ALTER TABLE:
ALTER TABLE table_name DROP INDEX index_name
eg:ALTER TABLE dept DROP INDEX deptno
PS:这两句都是等价的,都是删除掉table_name中的索引index_name
4.删除主键索引
ALTER TABLE table_name DRP PRIMARY KEY -- 删除主键索引,注意主键索引只能用这种方式删除
eg:ALTER TABLE dept DROP PRIMARY KEY
四、索引的查看与更改
1.索引的查看
show index from tablename
eg:SHOW INDEX from dept
2.索引的更改
更改个毛线,删掉重建一个既可
以上是关于2019.6.11_MySQL进阶一:索引的主要内容,如果未能解决你的问题,请参考以下文章