MySQL元数据获取基础笔记day06

一、辅助索引细分

1.1单列辅助索引

select * from t1 where name=""

1.2联合索引

select * from t1 where a and b and c

唯一索引

二、索引树高度(越低越好)

2.1表的数据量级大

分区表
分库分表(分布式架构)

2.2索引键值的长度

1.尽可能选择列值短的列创建索引。
2.采用前缀索引。

2.3数据类型选择(选择合适)

varchar和char
enum

三、索引管理

3.1压力测试准备

3.2索引命令操作

---查询索引

use school;
desc student;

Key这一列显示的就是索引

Key:PRI(主键),UNI(唯一索引),MUL(辅助索引)

show index from student\G;

---创建索引??

alrer table student add index idx_name(sname);
desc student;

---创建联合索引???

alter table student add index idx_sname_sage_ssex(sname,sage,ssex);

---创建前缀索引??

alter table student add index  idx(sname(5));

---创建唯一索引

 #先添加一列微信号创建个环境
 alter table student   add WeChat char(11)   not null;
alter table student add   unique index idx_tel(Wechat);

---删除索引

alter table student drop index idx;
后面不需要跟列名,只需要索引名即可。

3.3

压力测试准备(mysql自带功能)

mysqlslap --defaults-file=/etc/my.cnf --concurrency=100 --iterations=1 --create-schema='test' --query="select * from test.t100w where k2='VWtu'" engine=innodb --number-of-queries=2000 -uroot -p123456 -verbose

建个索引之后会发现速度明显提升。

4 explain(desc) ???

explain select  *  from t100w where k2='VWtu';
or
desc select * from text.t100w where k2='VWtu';

作用:抓取优化器优化过的执行计划。

4.1执行计划的分析

| id | select_type | table | partitions | type | possible_keys | key | key_len | ref | rows | filtered | Extra |

重点关注:
table:以上SQL语句涉及到的表???
type:查询的类型(全表扫描(ALL),索引扫描,查不到数据(NULL))?????
possible_keys:可能会用到的索引 ????
key:使用到的索引
key_len:索引的覆盖长度 ?????
Extra:额外的信息 ????

4.2 type详细说明?????

ALL:全表扫描,不会走任何索引

(1)查询条件,没建索引
(2)建了索引不走 (where条件中使用了!=)

desc select * from t100w where k2!='asdf';
desc select * from t100w where k2 like '%aa%'
desc select * from t100w where k2 not in ('asda','asas');
desc select * from t100w;

index全索引扫描

desc select k2 from t100w;顺序扫描

range 索引范围查询

==========从range开始,我们才认为索引是有价值的。==========
辅助索引

in () or
聚集索引:
!=not in

desc select * from city where id<10;
desc select * from city where countrycode like 'CH';

B+tree 索引能额外优化到。> < >= <= like between and
in 和or享受不到b+tree额外的优化效果,所以一般情况会将in,or进行改写

desc select * from city where countrycode='CHN' union all select * from city where countrycode='USA';

ref:辅助索引等值查询

desc select * from city where countrycode='CHN' 

eq_ref:多表连接查询中,非驱动表on的条件是主键或者唯一键

多表才会出现

const(system):主键或唯一键的等值查询 ( 效果最好)

desc select * from city where id=10;

NULL:获取不到数据

possible_keys:可能会用到的索引 ???

NULL:没有和查询条件匹配的索引条目。
有值:有和查询条件匹配的索引条目,但是没走,大部分原因是语句查询方式不符合索引应用的条件

key:使用到的索引?????

最终使用的索引,可以帮助我们判断是否走了合适的索引。

key_len:索引的覆盖长度????

在联合索引应用的判断时,会经常去看。

对于单列索引:

字符集
utf8 :3个字节
not null
int:4个字节 4 4+1
tinyint:1个字节 1
char(2): 24 没有not null就是24+1
vachar(2) 24+2 没有not null24+2+1 需要2个字节去存储整个字符的长度
utf8mb4:一个字符最大是4个字节
int
tinyint
char

说明:
1.有非空约束时,key_length就是最大字节长度。 也就是有not nll约束时key_lengh就是最大长度。
2.在没有非空约束时,字符最大长度+1。
3.varchar类型,需要额外在最大字符长度+2(存储字符长度的最长值。)

联合索引优化细节:

16955047-424c76754d3d0d22.png
image.png
alter table t1 add index idx(id,num,k1,k2,k3,k4);
select 5+4+9+8+11+10

(1) 最理想的

desc select * from t1 where a=1 and b='a' and c='a';
desc select * from t1 where b='1' and a=1 and c='a';
desc select * from t1 where c='1' and a=1 and b='a';
desc select * from t1 where c='1' and b='a' and a=1;
desc select * from t1 where a=1 and c='a' and b='a';
desc select * from t1 where b='1' and c='a' and a=1;

结论:
当我们的查询条件当中,包含了索引列中的所有的列条件时,并且都是等值的,那么无关他的顺序,都可以走全联合索引优化。原因是优化器会自动调整顺序来达到最佳的优化效果。
所以,我们重点需要关注的是联合索引建立的顺序,从左到右,唯一值多的列放在最左边。

(2)查询条件中有哪些因素会影响key_len长度
---按照索引的建立顺序,在查询条件中,少了任意一个中间列,后续列都无法走索引。
---在条件查询中间,出现不等值查询时。(后续只能卡在这个不等值上,无法使用联合索引。)

(3)如果有多子句的条件查询(必须是联合索引)
按照子句的执行顺序,建立联合索引。

Extra:额外的信息
Using file sort:原因是在group by ,order by, distinct等注意。
一般优化的方法是和where条件的列进行联合索引。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
数字乡村和智慧农业的数字化转型是当前农业发展的新趋势,旨在通过应用数字技术,实现农业全流程的再造和全生命周期的管理服务。中国政府高度重视这一领域的发展,提出“数字中国”和“乡村振兴”战略,以提升国家治理能力,推动城乡融合发展。 数字乡村的建设面临乡村治理、基础设施、产业链条和公共服务等方面的问题,需要分阶段实施《数字乡村发展战略纲要》来解决。农业数字化转型的需求包括满足市民对优质农产品的需求、解决产销对接问题、形成优质优价机制、提高农业劳动力素质、打破信息孤岛、提高农业政策服务的精准度和有效性,以及解决农业融资难的问题。 数字乡村建设的关键在于构建“1+3+4+1”工程,即以新技术、新要素、新商业、新农民、新文化、新农村为核心,推进数据融合,强化农业大数据的汇集功能。数字农业大数据解决方案以农业数字底图和数据资源为基础,通过可视化监管,实现区域农业的全面数字化管理。 数字农业大数据架构基于大数据、区块链、GIS和物联网技术,构建农业大数据中心、农业物联网平台和农村综合服务指挥决策平台三大基础平台。农业大数据中心汇聚各类涉农信息资源和业务数据,支持大数据应用。信息采集系统覆盖市、县、乡、村多级,形成高效的农业大数据信息采集体系。 农业物联网平台包括环境监测系统、视频监控系统、预警预报系统和智能控制系统,通过收集和监测数据,实现对农业环境和生产过程的智能化管理。综合服务指挥决策平台利用数据分析和GIS技术,为农业决策提供支持。 数字乡村建设包括三大服务平台:治理服务平台、民生服务平台和产业服务平台。治理服务平台通过大数据和AI技术,实现乡村治理的数字化;民生服务平台利用互联网技术,提供各类民生服务;产业服务平台融合政企关系,支持农业产业发展。 数字乡村的应用场景广泛,包括农业生产过程、农产品流通、农业管理和农村社会服务。农业生产管理系统利用AIoT技术,实现农业生产的标准化和智能化。农产品智慧流通管理系统和溯源管理系统提高流通效率和产品追溯能力。智慧农业管理通过互联网+农业,提升农业管理的科学性和效率。农村社会服务则通过数字化手段,提高农村地区的公共服务水平。 总体而言,数字乡村和智慧农业的建设,不仅能够提升农业生产效率和管理水平,还能够促进农村地区的社会经济发展,实现城乡融合发展,是推动中国农业现代化的重要途径。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值