为什么要有索引?就像为什么书要有目录一样。

索引是什么东西?和目录一样成为书的一部分。

SRE实战 互联网时代守护先锋,助力企业售后服务体系运筹帷幄!一键直达领取阿里云限量特价优惠。

索引是由什么组成的?原文中具有代表性的一部分。

 

 

索引有三种添加方式:

  1. 在创建表的时候,直接在列名后面添加 或在后面单独定义

  2. 在表外为其创建

  3. 外界进行修改时添加

  

CREATE TABLE user (
id key,
key index_id (id)
);
CREATE INDEX index_id ON user(id);
ALTER TABLE user ADD INDEX index_id(id);

 

索引有五种分类:  

  普通索引,

    关键词 Key 、Index

    作用:起普通目录的作用,没有加上任何限制条件,一个表可以存在多个普通索引

  唯一索引,

    关键词 Unique Key 、Unique Index

   作用:规定定义为唯一索引的列,不允许包含重复项但允许为NULL

  主键索引,

    关键词 Primary Key 、Primary Index

    作用:在唯一索引的基础上,不允许为NULL

  全文索引,

    关键词 FullText

    作用:专为模糊查询服务,有一套全新的查询语法

    SELECT * FROM user WHERE MATCH (id ) AGAINST ( ' xxx ');

  组合索引,

    关键词 Key (列1,列2 ...)

    作用:对于多条件查询会显著提高速度,但是存储该索引的代价也很大

      局限性:

      1. 最左原则。即只要你是从“列1”开始查询,你的绝大部分查询(不包含%xx、%xx%)方式都可以使用到该索引,但如果你不包含“列1” 的查询无法使用该查询。

      2. 舍后原则。即如果你查询条件中包含 “列1”、“列3”... ,那么由于你跳过了“列2”则该索引只会使用“列1” 去进行查询,后面的全部舍弃。同等与,你只写了 “列1” 之这一个查询条件

      3. 模止原则。即在你的查询条件中,设置 “列2” 为“xx%” 的模糊查询,那么索引会将“列2”之后的所有列舍去。

多说一点:

  全文索引和唯一索引的区别:

  1. 本质:

     全文索引是,一种约束。

     唯一索引是,一种索引。

  2. 组成:

    全文索引包含了不可重复性,并不允许为NULL。自增长必须依赖全文索引。

    唯一索引也有不可重复性,但允许为NULL。

3.作用:

    全文索引可以被其他表引用成外键,并且一张表中只有一个全文索引。

    唯一索引无法成为外键,而且一张表可以有多个唯一索引。

小疑问:

    组合索引时

    1.查询的时候不按照索引的顺序查询,如 WHERE “列2” AND “列1” AND “列3” 是否能用上?

    2.查询超出索引设定的列时,是否还能起作用?

      都可以

 

也许到这里,你会使用简单的语法去让数据库帮你实现索引。

但是,面对为什么索引能够让查询变的高效化时,你又会变得束手无策。

我们要知其然,还要知其所以然。

 

扫码关注我们
微信号:SRE实战
拒绝背锅 运筹帷幄