美文网首页
索引管理

索引管理

作者: 张新雨有点胖噢 | 来源:发表于2019-11-17 13:27 被阅读0次

第3章 MySQL索引管理

索引在录入数据时 会锁表注意

3.1 查询索引

第一个:

desc 表名;

show index from 表名;

image.png image.png

3.2 创建索引 (辅助索引)

辅助索引细分为:

单列

创建方法:

ALTER TABLE city ADD INDEX 索引名(表名);

删除方法

ALTER TABLE city DROP INDEX 索引名;

查看

desc 表名;

唯一索引

条件 需要是唯一值 不能有空值

创建:

ALTER TABLE city ADD UNIQUE INDEX 索引名(表名);

删除:

ALTER TABLE city DROP UNIQUE INDEX 索引名;

查询

SHOW INDEX FROM 表;

联合索引

联合索引 将多个列放在一起做索引

创建:

ALTER TABLE 表名 ADD INDEX 索引名(列名,列名);

删除:

ALTER TABLE 表名 DROP INDEX 索引名;

如何确认一个查询,对于联合索引应用长度

例如我们创建( a,b,c)列的索引

联合索引时 遇到不等值条件时 会既然截停 如果从左到右条件顺序不对时也会截停

联合索引构建过程

创建联合索引注意顺序

在生成叶子节点的时候 按输入的顺序 进行排序 先排列a 在按照b列二次排列

查询的时候 多条件 会先查找a列 然后在找b列 得出聚簇列信息

小结:

  1. 构建时,取出ID列 + a列 + b列 依次 a – b -c 的顺序进行数据行排列

  2. 支节点和根节点指挥保存最左列的索引值

  3. 联合索引查询时 遵循最左原则 最左列尽量使用重复值最少的列

  4. 使用时 尽量应用完整

联合索引规则

  1. 把唯一值多的放在最前面

  2. 理论上要将不等值的列放在最后面

  3. key_len 覆盖长度越长越好

  4. 查询条件结果

前缀索引

截取前几个字符长度 作为辅助索引数 做辅助列

为的是降低叶子节点/支节点暂用空间 减小索引数的高度

创建

ALTER TABLE city ADD INDEX idx_na(表名(n个字符));

删除

ALTER TABLE city DROP INDEX idx_na;
判断前缀何时长度
计算前缀索引重复度低于百分之10 即可设为前缀索引
alter tables t1 add index idx(name(10));
例如: city表中,name列要做前缀索引,判断多少个字符合适

select count(*) from world.city ;   ----> 4079 
select count(distinct (left(name,5)) from world.city ; ---> 3554

取前五个字符 计算后超过百分之10 

select count(distinct (left(name,6)) from world.city ; ---> 3775

取前六个字符  计算后发现重复值低于百分之10 我们就可以建立以前六个字符创建的前缀索引

3.3 索引树高度影响原因

  1. 表内行数多 解决办法 拆分表 : 归档表, 分区表, 分布式系统存储

  2. 索引列值过长 解决想法 : 前缀索引

  3. 数据类型影响

a) 选择尽量简短的数据类型替代繁琐的数据类型

b) 变长数据最好是vatvhar()

c) 灵活使用enum()类型

相关文章

  • es索引管理

    索引管理[https://www.elastic.co/subscriptions] 索引管理使您能够查看索引设置...

  • MongoDB学习报告(二)

    概述 MongoDB索引管理MongoDB查询优化 MongoDB索引管理 单键索引中的每一项都应该对应被索引文档...

  • mysql索引

    管理索引相关语句 查看索引:show index from [table_name];创建索引:alter tab...

  • 索引管理

    索引是具有相同结构的文档集合.例如,可以有一个客户的索引,包括一个产品目录的索引,一个订单数据的索引等.创建索引时...

  • 索引管理

    https://www.elastic.co/guide/cn/elasticsearch/guide/curre...

  • day06

    6.7 索引的操作管理 1.添加索引 2.查看索引 3.创建唯一索引 4.创建前缀索引 5.创建联合索引 6.删除...

  • mysql 索引管理

    [TOC] 索引管理 按特定数据结构存储的数据 索引类型 聚集索引、非聚集索引: 数据是否与索引存储在一起 主键索...

  • MySQL索引概述

    1. 管理索引的语法 查看表存在的索引 创建索引 删除索引 注:还有一种通过 create index 和 dro...

  • 110_elasticsearch生产集群中的索引管理(一)

    110_elasticsearch生产集群中的索引管理(一) 1、创建索引 (1)创建索引的语法 用setting...

  • elasticsearch之四索引Index详解

    个人专题目录 1. 索引Index入门 1.1 索引管理 手动创建索引 直接put数据 PUT index/_do...

网友评论

      本文标题:索引管理

      本文链接:https://www.haomeiwen.com/subject/qkovictx.html