MySQL 索引简介
2022/4/16 19:12:33
本文主要是介绍MySQL 索引简介,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
索引的含义和特点
索引是创建在表上的,是对数据库表中一列或多列的值进行排序的一种结构,可以提高查询速度。使用索引类似于使用新华字典的音序表,通过提取拼音,可以快速定位该数据的位置
索引有其明显的优势,也有不可避免的缺点:
- 创建和维护索引同样需要耗费时间,并随着数据量的增加而增加
- 索引也会占用一定的物理空间
- 增加、删除和修改数据时,要动态地维护索引
索引的分类和操作
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;
索引的设计原则
- 选择唯一性索引,可以更快速地确定某条记录
- 为经常需要排序、分组和联合操作的字段建立索引
- 为经常需要作为查询条件的字段建立索引
- 限制索引的数目,索引越多,占用的空间就越多,修改表时对索引的重构和更新也很麻烦
- 尽量使用数据量少的索引,索引的值越长,查询速度也会受影响
- 尽量使用前缀来索引,对于 TEXT 和 BLOB 类型的字段,进行全文索引会很浪费时间,如果只检索字段前面的若干字段,可以提高速度
- 删除不再使用或很少使用的索引
这篇关于MySQL 索引简介的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-16MySQL资料:新手入门教程
- 2024-11-16MySQL资料:新手入门教程
- 2024-11-15MySQL教程:初学者必备的MySQL数据库入门指南
- 2024-11-15MySQL教程:初学者必看的MySQL入门指南
- 2024-11-04部署MySQL集群项目实战:新手入门教程
- 2024-11-04如何部署MySQL集群资料:新手入门指南
- 2024-11-02MySQL集群项目实战:新手入门指南
- 2024-11-02初学者指南:部署MySQL集群资料
- 2024-11-01部署MySQL集群教程:新手入门指南
- 2024-11-01如何部署MySQL集群:新手入门教程