mysql-索引篇1-索引的概念

一、索引的概念

1.1 索引的作用

1.2 索引的分类(还不清楚到底怎么归类)**

查看有哪些索引: SHOW index;

聚簇索引(主键索引) 每张表只能有一个数据和索引在同一个文件

​ 按照每张表的主键构造一颗B+树,同时叶子节点中存放的即为整张表的记录数据。

辅助索引(二级索引): 叶子节点并不包含行记录的全部数据

​ 非主键索引,叶子节点=键值+书签(行的索引值)

覆盖索引: (extra 提示using index)

​ InnoDB存储引擎支持覆盖索引,即从辅助索引中就可以得到查询的记录,而不需要查询聚集索引中的记录了(不需要回表操作)。

​ 覆盖索引并不适用于任意的索引类型,索引必须存储列的值,所以不需要回表操作。

MySQL只能使用B-树.

联合索引:

​ 联合索引也是一棵B+树,其键值数量大于等于2。键值都是排序的,通过叶子节点可以逻辑上顺序的读出所有数据。

单值索引: 一个索引只包含单个列

多值索引、复合索引组合索引): 即一个索包含多个列

复合索引只会对与创建索引时的排序顺序完全相同或相反的 order by语句进行优化

唯一索引: 索引唯一,但可以null, 声明unique关键字时,会为其字段自动添加唯一索引

1
2
3
4
5
6
7
8
9
10
11
12
// 单值索引 
#外部创建
CREATE INDEX [indexname]ON t1(colname);

#创建表的时候创建
CREATE TABLE mytable( ID INT NOT NULL, username VARCHAR(16) NOT NULL, INDEX [indexName] (username(length)) );

#alter语句添加
ALTER table tableName ADD INDEX indexName(columnName)

// 复合索引
CREATE INDEX idx_c1_c2_c3ON tablename(c1,c2,c3)

img

1.3 创建

img

1.4 什么时候该创建索引?

img

不该创建?

img

对于最长使用的查询,可以针对性的建立索引来优化速度。

join查询在有索引条件下

  驱动表有索引不会使用到索引

  被驱动表建立索引会使用到索引

二、性能分析和优化策略

img

img

img

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值