MySQL索引

一、索引概念和分类

对数据库表中的一列或者多列的值进行排序的一种结构,旨在提高数据的查询效率。

1.普通索引

不需要添加任何限制条件,可以创建在任何数据类型中,由字段本身的完整性约束决定。

2.唯一索引

使用unique参数进行设置,该值必须是唯一的。主键是一种特殊的唯一索引。

3.全文索引

使用fulltext参数进行设置,只能创建在char,varchar或者text类型的字段上,适用于查询数据量较大的字符串类型的字符时。

4.单列索引

在表中单个字段上创建,只能根据该字段进行索引查询,只要保证该索引只对应一个字段即可。

5.多列索引

在表中多个字段创建,可根据多个字段进行索引查询,只有查询条件中使用了这些字段中的第一个字段时,索引才会被使用。

6.空间索引

使用spatial参数进行设置,只能建立在空间数据类型上,geometry,point,linestring和polygon等。

 

二、索引设计原则

1.选择唯一索引

唯一索引值是唯一的,可快速通过该索引来缺点某条记录。

例如:人->身份证号 学生->学号

2.为经常需要排序、分组和联合操作的字段建立索引

频繁使用orderby,groupby,distinct和union等操作字段时

3.经常列为查询条件的字段建立索引

4.限制索引的数目

索引数目不是越多越好,每个索引都要占用磁盘空间,修改表时,对索引的重构和更新麻烦。

5.尽量使用数据量少的索引

如,varchar(10)可以, varchar(255)避免

6.尽量使用前缀来索引

检索值很长时,比如text、blog,只检索前面的若干个字符

7.不使用或使用频率低的索引,应尽快删除

作为参考

 

三、创建和删除索引

1.创建表时创建索引

语法:

create table 表名(属性名 数据类型 [完整性约束条件],
...
[unique|funlltext|spatial]index|key[别名](属性名 1[(长度)][asc|desc]))
创建普通索引
craete table index1(
id int,
name varchar(20),
sex boolean,
index(id)
);
创建唯一索引
craete table index2(
id int,
name varchar(20),
sex boolean,
unique index index2_id(id asc)
);
创建全文索引

InnoDB不支持全文索引,MyISAM引擎支持

craete table index3(
id int,
info varchar(20),
sex boolean,
fulltext index index3_info(info)
) engine MyISAM;

 

创建单列索引

 

创建多列索引
 
创建空间索引
craete table index4(
id int,
space geometry not null,
spatial index index4_sp(space)
)engine=MyISAM;

2.在已存在的表中创建索引

语法:

create [unique|fulltext|spatial] index 索引名
on 表名(属性名|[长度][asc|desc]);
创建普通索引
create index index7_id on example(id);

 

创建唯一索引

unique index

 

创建全文索引

fulltext index

 

创建单列索引

index(id)

 

创建多列索引

index(id, name)

 

创建空间索引

spatial index

 

3.alter table语句创建索引

语法:

alter table 表名 add [unique|fulltext|spatial] index 索引名 (属性名 [(长度)][asc|desc]);

 

创建普通索引
alter table example add index index3_name(stu_name(20));

 

创建唯一索引

add unique index

 

创建全文索引

add fulltext index

数据类型需要是char,varchar,text,使用MyISAM引擎

 

创建单列索引

add index(id)

 

创建多列索引

add index(id, name)

 

创建空间索引

add spatial index

使用MyISAM引擎

 

4.删除索引

语法

drop index 索引名 on 表名

示例

drop index id on index1;

 

转载于:https://www.cnblogs.com/aidata/p/11546373.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
MySQL索引是一种数据结构,可以帮助MySQL快速定位和访问表中的数据。使用索引可以提高查询效率,降低数据库的负载。下面是MySQL索引的一些基本概念和使用方法: 1. 索引类型 MySQL支持多种类型的索引,包括B树索引、哈希索引、全文索引等。其中,B树索引是最常用的一种,也是默认的索引类型。B树索引可以用于精确匹配和范围查询,而哈希索引主要用于等值查询,全文索引则用于文本检索。 2. 索引创建 可以在创建表时指定索引,例如: ``` CREATE TABLE users ( id INT PRIMARY KEY, name VARCHAR(50), email VARCHAR(50), INDEX idx_email (email) ); ``` 也可以在已有的表上添加索引,例如: ``` ALTER TABLE users ADD INDEX idx_name (name); ``` 3. 索引使用 查询语句中可以使用WHERE子句和ORDER BY子句来利用索引,例如: ``` SELECT * FROM users WHERE email = 'example@example.com'; SELECT * FROM users WHERE name LIKE 'John%' ORDER BY id DESC; ``` 需要注意的是,索引并不是越多越好,过多的索引会占用过多的磁盘空间并降低写操作的性能。因此,需要根据实际情况选择合适的索引。同时,还需要定期对索引进行维护,包括优化查询语句、删除不必要的索引等。 4. 索引优化 MySQL提供了一些工具来优化索引,例如EXPLAIN命令可以帮助分析查询语句的执行计划,找出慢查询和不必要的全表扫描。可以使用OPTIMIZE TABLE命令来优化表的索引和碎片,从而提高查询性能。还可以使用缓存来避免频繁的查询操作,例如使用Memcached或Redis等缓存工具。 以上就是MySQL索引的一些基本概念和使用方法,需要根据实际情况进行选择和优化。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值