欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Mysql索引使用

程序员文章站 2023-10-27 08:01:03
为什么要有索引?就像为什么书要有目录一样。 索引是什么东西?和目录一样成为书的一部分。 索引是由什么组成的?原文中具有代表性的一部分。 索引有三种添加方式: 1. 在创建表的时候,直接在列名后面添加 或在后面单独定义 2. 在表外为其创建 3. 外界进行修改时添加 索引有五种分类: 普通索引, 关键 ......

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

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

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

 

 

索引有三种添加方式:

  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.查询超出索引设定的列时,是否还能起作用?

      都可以

 

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

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

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