ICode9

精准搜索请尝试: 精确搜索
首页 > 数据库> 文章详细

MySQL 索引简介

2022-04-16 17:33:19  阅读:206  来源: 互联网

标签:INDEX 简介 tablename ASC 索引 length MySQL DESC



索引的含义和特点

索引是创建在表上的,是对数据库表中一列或多列的值进行排序的一种结构,可以提高查询速度。使用索引类似于使用新华字典的音序表,通过提取拼音,可以快速定位该数据的位置

索引有其明显的优势,也有不可避免的缺点:

  • 创建和维护索引同样需要耗费时间,并随着数据量的增加而增加
  • 索引也会占用一定的物理空间
  • 增加、删除和修改数据时,要动态地维护索引

索引的分类和操作

1. 普通索引

所谓普通索引,就是在创建索引时,不附加任何限制条件(唯一、非空等限制),可以创建在任何数据类型的字段上

创建表时直接创建索引

CREATE TABLE tablename(  
	propname1 type1 [CONSTRAINT1],
    propname2 type2 [CONSTRAINT2],
    ......
	INDEX|KEY [indexName] (propname1 [(length) [ASC|DESC]])  
);  

在已存在的表上通过 CREATE 语句创建索引

CREATE INDEX indexName ON tablename (propname [(length) [ASC|DESC]])

通过 ALTER TABLE 语句创建

ALTER table tablename ADD INDEX|KEY indexName(propname [(length) [ASC|DESC]])

2. 唯一索引

所谓唯一索引,就是在创建索引时,限制索引的值必须唯一,主键就是一种特殊的唯一索引

创建表时直接创建索引

CREATE TABLE tablename(  
	propname1 type1 [CONSTRAINT1],
    propname2 type2 [CONSTRAINT2],
    ......
	UNIQUE INDEX|KEY [indexName] (propname1 [(length) [ASC|DESC]])  
);  

在已存在的表上通过 CREATE 语句创建索引

CREATE UNIQUE INDEX indexName ON tablename (propname [(length) [ASC|DESC]])

通过 ALTER TABLE 语句创建

ALTER table tablename ADD UNIQUE INDEX|KEY indexName(propname [(length) [ASC|DESC]])

3. 全文索引

全文索引主要关联在 CHAR、VARCHAR 和 TEXT 字段上,以便能更加快速地查询数据量较大的字符串类型字段

创建表时直接创建索引

CREATE TABLE tablename(  
	propname1 type1 [CONSTRAINT1],
    propname2 type2 [CONSTRAINT2],
    ......
	FULLTEXT INDEX|KEY [indexName] (propname1 [(length) [ASC|DESC]])  
);  

在已存在的表上通过 CREATE 语句创建索引

CREATE FULLTEXT INDEX indexName ON tablename (propname [(length) [ASC|DESC]])

通过 ALTER TABLE 语句创建

ALTER table tablename ADD FULLTEXT INDEX|KEY indexName(propname [(length) [ASC|DESC]])

4. 多列索引

所谓多列索引,是指在创建索引时关联多个字段。虽然可以通过所关联的字段进行查询,但是只有查询条件中使用了所关联字段中的第一个字段,多列索引才会被使用

创建表时直接创建索引

CREATE TABLE tablename(  
	propname1 type1 [CONSTRAINT1],
    propname2 type2 [CONSTRAINT2],
    ......
	INDEX|KEY [indexName] (propname1 [(length) [ASC|DESC]],
                           propname2 [(length) [ASC|DESC]],
                           ......);
);  

在已存在的表上通过 CREATE 语句创建索引

CREATE INDEX indexName ON tablename (propname1 [(length) [ASC|DESC]],
                                     propname2 [(length) [ASC|DESC]],
                                     ......);

通过 ALTER TABLE 语句创建

ALTER table tablename ADD INDEX|KEY indexName(propname1 [(length) [ASC|DESC]],
											  propname2 [(length) [ASC|DESC]],
											  ......);

5. 删除索引

DROP INDEX indexName ON tablename;

索引的设计原则

  1. 选择唯一性索引,可以更快速地确定某条记录
  2. 为经常需要排序、分组和联合操作的字段建立索引
  3. 为经常需要作为查询条件的字段建立索引
  4. 限制索引的数目,索引越多,占用的空间就越多,修改表时对索引的重构和更新也很麻烦
  5. 尽量使用数据量少的索引,索引的值越长,查询速度也会受影响
  6. 尽量使用前缀来索引,对于 TEXT 和 BLOB 类型的字段,进行全文索引会很浪费时间,如果只检索字段前面的若干字段,可以提高速度
  7. 删除不再使用或很少使用的索引

标签:INDEX,简介,tablename,ASC,索引,length,MySQL,DESC
来源: https://www.cnblogs.com/Yee-Q/p/16153187.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有