美文网首页
MySql 索引使用总结-基础篇

MySql 索引使用总结-基础篇

作者: 编程人生 | 来源:发表于2022-01-05 22:17 被阅读0次

    Mysql索引

    一.索引概述

    简单的说,索引就是对某表中一列或若干列值进行排序的结构.它由该表的一列或者多列的值,以及指向这些列对应存储位置的指针构成.

    索引是依赖表建立的,一个表有两部分组成:一部分用来存放表的数据页面,另一部分存放索引页面.由于索引页面比数据页面小的多,在进行数据检索时,系统会先搜索索引页面,从中找到所需数据指针,再通过指针从数据页面中读取数据.这种操作模式类似于图书的目录.

    索引的作用

    1.使用索引可以明显的提高数据查询的速度.

    2.通过对多个字段使用唯一索引,可以保证多个字段的唯一性.

    3.在表与表之间连接查询时,如果创建了索引,就可以提高表与表之间的连接速度

    4.索引的创建,即有利也有弊,在创建索引时需要权衡利和弊

    适合被创建索引的情况

    1.经常被查询的字段

    2.分组字段

    3.主键和外键字段.

    4.需要设置唯一性约束的字段.

    不适和创建索引的情况

    1.在查询中很好用到的字段

    2.具有重复值的字段

    3.较小的数据表,这种情况使用索引并不能改善任何索引性能.

    另外,过多的创建索引,还会占用许多的磁盘空间.

    索引的操作

    1.创建普通索引

    普通索引:就是在创建索引时,不附加任何限制条件,如唯一,非空等,这种类型的索引可以创建在任何数据类型的字段上.

    Create table 表名

    (列名 数据类型....

    INDEX|KEY 索引名(列名i[长度][ASC|DESC])

    );

    2.在已经存在的表上创建普通索引

    Create INDEX 索引名

    on 表名 (列名[长度][ASC|DESC])

    3.通过ALTER TABLE 语句创建普通索引

    ALTER TABLE 表名

    ADD INDEX|KEY 索引名(列名[长度][ASC|DESC]);

    创建唯一索引

    唯一索引和普通索引类似,但唯一索引要求索引的值是唯一的,需要使用关键字UNIQUE标明

    创建唯一索引与创建普通索引一样也有三种方式.

    一.建表时创建唯一索引,语法规则:

    Create table 表名

    (

    列名 数据类,....

    UNIQUE INDEX|KEY 索引名 (列名 i [长度][ASC|DESC]);

    );

    二.是在已经存在的表上创建唯一索引,语法规则:

    Create UNIQUE INDEX 索引名

    on 表名(列名[长度][ASC|DESC]);

    三.通过ALTER TABLE 语句创建唯一索引,语法规则:

    ALTER TABLE 表名

    ADD UNIQUE INDEX|KEY 索引名(列名[长度][ASC|DESC]);

    创建主键索引

    ALTER TABLE 表名

    ADD PRIMARY KEY(列名);

    创建全文索引

    在MySQl 中,提供了一种称为全文索引的技术,主要关联在数据类型为CHAR Varchar 和Text 等的长度字符字段上.

    1.创建表时创建全文索引

    CREATE TABLE 表名

    (

    列名 数据类型 ,.....

    FULLTEXT INDEX|KEY 索引名 (列名i[长度][ASC|DESC])

    );

    创建全文索引比普通索引多了一个关键字 FULLTEXT

    2.在已经存在的表上创建全文索引

    3.通过ALTER Table 语句创建全文索引sql

    创建多列索引

    1.创建表时创建多列索引

    CREATE table 表名

    (

    列名 数据类型 , .....

    INDEX|KEY (列名i[长度][ASC|DESC],列名i[长度][ASC0][DESC],.......)

    );

    2.在已经存在的表上创建多列索引

    语法规则:

    CREATE INDEX 索引名

    on 表名 (列名 1[长度][ASC|DESC],列名 1[长度][ASC|DESC],....);

    3.通过ALTER Table 语句创建多列索引

    语法规则:

    ALTER TABLE 表名

    ADD INDEX|KEY 索引名(列名[长度][ASC|DESC],列名[长度][ASC|DESC],......);

    删除索引

    DROP INDEX 索引名 on 表名;

    相关文章

      网友评论

          本文标题:MySql 索引使用总结-基础篇

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