mysql中的索引

作者: Geroge1226 | 来源:发表于2021-07-08 14:09 被阅读0次

1、说明

定义:索引是创建在表上,对数据库一列或多列组合的值进行排序的一种结构,主要是提高对表中的数据的查询速度。
【类比】
数据表类比新华字典,索引好比新华字典中的音序,如果没有音序查找数据要全量查询400多页,如果有音序只需要先遍历10几页音序直接查找,这样提高了查询速度,索引功能类似。

2、索引存储

索引从存储结构上来划分:BTree索引(B-Tree或B+Tree索引),Hash索引,full-index全文索引,R-Tree索引。

2.1 索引优缺点
  • 优点
    提高数据检索速度,提高分组排序等耗费时间。
  • 缺点:
    索引创建和维护需要耗费时间,随着数据量的增加耗时时间会增加,每插入一条数据就要对该记录按索引排序。

3、索引的分类

  • 类型上分:
    (1)普通索引 index
    (2)唯一索引 unique
    (3)全文索引 fulltext
    全文索引目前只有MyISAM存储引擎支持
  • 作用字段空间分
    (1)单列索引
    (2)多列索引,多列索引只有使用到索引中的第一个字段时候才生效,其他情况索引会失效。
    (3)空间索引,空间索引的存储引擎必须是MyISAM,且索引字段必须非空。
  • 根据中数据的物理顺序与键值的逻辑(索引)顺序关系:
    (1)聚集索引
    (2)非聚集索引

4、索引设计原则

(1)选择唯一性索引
(2)为经常要排序,分组和联合操作的字段建立索引
(3)为经常做为查询条件的字段建立索引
(4)限制索引的数量
(5) 尽量使用数据量少的字段建立索引
(6)删除不再使用和使用量较少的索引

5、索引操作

5.1、 索引创建

(1)建表时候创建索引

CREATE TABLE 表名( 属性名  数据类型 [完整的约束条件],
                  属性名  数据类型 [完整的约束条件],
                  ....
                 [UNIQUE | FULLTEXT | SPATIAL]  INDEX | KEY   别名 (属性名  [(长度)]  [ASC | DESC])
);

【例子】

create table aa( id int(10) not null primary key,
code varchar(20) not null ,
name varhcar(20) not null,
index (id) 
);

(2)已经存在表索引

  • 创建索引create方式,语法:
create [UNIQUE | FULLTEXT | SPATIAL] index 索引名  
on 表名(属性名 [(长度)]  [ASC | DESC]);
  • 创建索引alter table方式,语法:
alter table 表名 add [UNIQUE | FULLTEXT | SPATIAL] index 索引名  
on 表名(属性名 [(长度)]  [ASC | DESC]);
5.2、索引的删除
drop index  on 表名;
5.3、禁用/开启 索引

有时候我们会在批量导入(插入)数据时候由于索引会影响到数据插入速度,需要临时禁用,等数据导入完毕之后在开启索引。

  • 禁用索引
alter table  表名 disable keys;
  • 重新开启索引
alter table 表名 enable keys;

6、查询索引失效

  • like语句,索引列"%"开头模糊匹配查询条件,索引不生效。
  • 多列索引,第一个索引字段存在时才生效,否则不生效。
  • or语句,or前后语句都必须是索引情况索引才生效,否则索引不生效。

相关文章

  • MySQL索引背后的数据结构及算法原理

    参考来源 mysql索引分析 MySQL索引背后的数据结构及算法原理 MySQL中EXPLAIN命令详解 索引连接...

  • 20、MySQL 索引类型有哪些?

    MySQL 索引类型有哪些? 主键索引 索引列中的值必须是唯一的,不允许有空值。 普通索引 MySQL中基本索引类...

  • Mysql之索引的基本概念语法

    1.Mysql中索引的概念 MySQL索引的建立对于MySQL的高效运行是很重要的,索引可以大大提高MySQL的检...

  • 索引

    mysql中的索引 MySQL中普遍使用B+Tree做索引,但在实现上又根据聚簇索引和非聚簇索引而不同。 聚簇索引...

  • 索引

    MYSQL索引 MYSQL中索引文件以B树结构存储,索引可分为单列索引和多列索引。 对于多列索引中,当一个SQL语...

  • MySQL索引及查询优化书目录

    MySQL索引的原理之索引目的 MySQL索引的原理之索引原理 MySQL索引的原理之索引的类型 MySQL索引的...

  • mysql的索引呢?你又知道多少?

    mysql的索引呢?你又知道多少? 在Java面试中必问mysql,问mysql的时候索引也是必问,可见索引有多么...

  • 谈谈什么是MySql的索引

    索引是什么 生活中的索引 MySQL官方对索引的定义为:索引(Index)是帮助MySQL高效获取数据的数据结构。...

  • MySQL中的索引用法总结

    MySQL中的索引用法总结 索引作为一种数据结构,其用途是用于提升检索数据的效率。 索引的分类 MySQL中的索引...

  • MYSQL记录

    简单描述MySQL中,索引、主键、唯一索引、联合索引的区别,对数据库的性能有什么影响? MySQL索引的基础和类型...

网友评论

    本文标题:mysql中的索引

    本文链接:https://www.haomeiwen.com/subject/mjnzultx.html