博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
MySQL 索引
阅读量:4350 次
发布时间:2019-06-07

本文共 1984 字,大约阅读时间需要 6 分钟。

MySQL索引的建立对于MySQL的高效运行是很重要的,索引可以大大提高MySQL的检索速度。

一. 普通索引

作用:加速查找

# 1.创建表时直接创建索引create table user(    nid int not null auto_increment primary key,    name varchar(32) not null,    email varchar(64) not null,    extra text,    index ix_name (name)        # ix_name 索引名,括号后面指定索引所在的列);# 2.创建表后再创建索引create index ix_name on user(name);#注意:对于创建索引时如果是BLOB 和 TEXT 类型,必须指定length,例如使用列名称的前10个字符:create index ix_extra on user(extra(10));# 3.删除索引drop ix_name on user;# 4.查看索引show index from user;

二. 唯一索引

作用:加速查找,约束列数据不能重复,数据可以为 null

# 1.创建表时直接创建唯一索引create table user(    nid int not null auto_increment primary key,    name varchar(32) not null,    email varchar(64) not null,    extra text,    unique ix_name (name)        );# 2.创建表后再创建唯一索引create  unique index ix_name on user(name);# 3.删除唯一索引drop unique ix_name on user;

三. 主键索引

作用:加速查找,约束列数据不能重复,数据不能为 null

# 1.创建表时直接创建主键索引create table user(    nid int not null auto_increment primary key,    # 指定 nid 为主键索引    name varchar(32) not null,    email varchar(64) not null,    extra text      );# 2.创建表后添加主键索引alter table user add primary key(nid);# 3.删除主键索引alter table user drop primary key;

四. 组合索引

作用:多列可以创建一个索引文件

# 1.创建组合索引create table user(    nid int not null auto_increment primary key,       name varchar(32) not null,    email varchar(64) not null,    extra text      );# 将 name 和 email 两列组合成一个索引create index ix_name_email on user(name,email);# 组合索引遵循最左前缀,即 where条件必须跟 name 列才会使用索引。

覆盖索引

只需要在索引表中就能获取到数据。

合并索引

# 有两个单独的索引,搜索时使用两个索引create table user(    nid int not null auto_increment primary key,    name varchar(32) not null,    email varchar(64) not null,    extra text,    index ix_name(name) ,    index ix_email(email));select * from user where name = 'klvchen' or email = 'klvchen@126.com';

使用索引注意事项

  • 避免使用select *
  • count(1)或count(列) 代替 count(*)
  • 创建表时尽量时 char 代替 varchar
  • 表的字段顺序固定长度的字段优先
  • 组合索引代替多个单列索引(经常使用多个条件查询时)
  • 尽量使用短索引
  • 使用连接(JOIN)来代替子查询(Sub-Queries)
  • 连表时注意条件类型需一致
  • 索引散列值(重复少)不适合建索引,例:性别不适合

转载于:https://www.cnblogs.com/klvchen/p/10135904.html

你可能感兴趣的文章
Page.RegisterStartupScript和Response.Write的区别。
查看>>
hdu4348区间更新的主席树+标记永久化
查看>>
bzoj3261: 最大异或和 可持久化trie
查看>>
ZOJ 2532 Internship
查看>>
HDU 3452 Bonsai
查看>>
[Erlang12] Mnesia分布式应用
查看>>
图的遍历 | 1013 连通块块数
查看>>
Kinect 开发 —— 进阶指引(上)
查看>>
python学习笔记(六)time、datetime、hashlib模块
查看>>
uva489(需要考虑周全)
查看>>
C-关键字(二)
查看>>
排序笔记
查看>>
天气API整理,返回的数据格式为json对象
查看>>
andorid 字体 修改
查看>>
oracle日期函数、字符串函数、格式化方式
查看>>
咏南APP(手机)开发框架
查看>>
第三周学习进度总结
查看>>
05:年龄与疾病
查看>>
POJ 1873
查看>>
POJ_1679_The Unique MST(次小生成树模板)
查看>>