✨MySql索引

MySql中的索引语法

创建索引

1 在创建表时创建索引:

CREATE TABLE mytable(  
    ID INT NOT NULL,   
    username VARCHAR(16) NOT NULL,  
    INDEX [indexName] (username(length))  
); 

2在创建表以后添加索引:

ALTER TABLE my_table ADD [UNIQUE] INDEX index_name(column_name);
或者
CREATE INDEX index_name ON my_table(column_name);

在创建索引时,需要对表加锁,创建的索引需要占用磁盘空间。

2 根据索引查询:

具体的查询:
select * from table where column=column;(为column创建了索引)

模糊查询:
select * from table where colunm like "%a%";

3 删除索引

DROP INDEX my_index ON tablename;
或者
ALTER TABLE table_name DROP INDEX index_name;

4 查看表中的索引

show index from table;

5 查看语句使用索引的情况

//explain 加查询语句
explain SELECT * FROM table_name WHERE column_1='123';

索引的优缺点

优势:可以快速检索,减少I/O次数,加快检索速度;根据索引分组和排序,可以加快分组和排序;

劣势:索引本身也是表,因此会占用存储空间,一般来说,索引表占用的空间的数据表的1.5倍;索引表的维护和创建需要时间成本,这个成本随着数据量增大而增大;构建索引会降低数据表的修改操作(删除,添加,修改)的效率,因为在修改数据表的同时还需要修改索引表;

索引的分类

常见的索引类型有:主键索引,唯一索引,普通索引,全文索引,组合索引

1 主键索引:即主键索引,根据主键创建的索引,不允许空值,不允许重复。

2 唯一索引,用来建立索引的列的值必须是唯一的,可以为空

3 普通索引:用表中普通列建立的索引,没有任何限制

4 全文索引:用大文本对象的列构建的索引

5 组合索引:用多个列组合建立的索引,这多个列中的值不允许有重复
另外:

*遵循“最左前缀”原则,把最常用作为检索或排序的列放在最左,依次递减,组合索引相当于建立了col1,col1col2,col1col2col3三个索引,而col2或者col3是不能使用索引的。

*在使用组合索引的时候可能因为列名长度过长而导致索引的key太大,导致效率降低,在允许的情况下,可以只取col1和col2的前几个字符作为索引

ALTER TABLE 'table_name' ADD INDEX index_name(col1(4),col2(3));

表示使用col1的前4个字符和col2的前3个字符作为索引

索引的实现原理

MySql支持多种存储引擎,而各种存储引擎对索引的支持也不相同,因此,MySql数据库支持多种索引类型,如BTree索引,B+Tree索引,哈希索引,全文索引等。

posted @ 2020-07-29 16:13  两小无猜  阅读(115)  评论(0编辑  收藏  举报