MySQL学习记录day7

用虚拟机装myql装了半天。。然后有又连不上datagrip,折腾了几个小时才知道原来只能主机ip才能连上虚拟机。。
#索引语法
#创建索引
#create [UNIQUE][FULLTEXT]index index_name on table_name (index_col_name,...);
#查看索引
#show index from table_name;
#删除索引
#drop index index_name on table_name;

#可重复索引
# create index idx_user_name on tb_user(name);
#唯一索引
# create unique index idx_phone on tb_user(phone);
#联合索引
# create index idx_user_age_sta on tb_user(user,age,status);
#删除索引
# drop index idx_email on tb_user;

#SQL性能分析
#主要对查询语句进行优化

#SQL执行频率
#show [session|global] status like 'com_______';
#全局查询+模糊匹配查询当前数据库的插入/查询/更新/删除次数

#1.慢查询日志:记录了所有执行时间超过指定参数的所有SQL语句的日志
#默认没有开启,修改/etc/my.cnf
#慢查询日志的记录信息在/var/lib/mysql/localhost-slow.log

#2.profile详情
#慢查询日志只会记录超过指定时间的语句,但部分情况下有些语句的执行时间超过了其本应消耗的
#show profiles可以显示语句的时间花费
# select @@have_profiling;查看是否支持profile操作
#默认profiling是关闭的,通过set语句在session/global级别开启profiling
set profiling = 1;
show profiles ;
#查看指定语句的各个阶段的耗时情况
# show profile for query id;
#查看指定语句的各个阶段的cpu占用情况
# show profile cpu for query id;

#3.explain执行计划
#explain或者desc命令获取MySQL如何执行select语句的信息,包括select语句执行过程中表如何连接和链接的顺序
# explain select * from table;
#explain各字段含义
#id:select查询的序列号,id相同则执行顺序由上到下,id越大越先被执行;
#select_type:表示select的类型,常见取值有simple(简单表,即不使用表连接或子查询)、primary(主查询,即外层的查询)、union(union中的第二个或者后面的查询语句)、subquery(select/where之后包含了子查询)等
#type:表示连接类型,性能由好到差的连接类型为NULL、system、const、eq_ref、ref、range、index、all
#查询时不使用任何表能达到null
#查询使用主键或唯一索引为const,非唯一索引会出现ref
#出现all为全表扫描,index会遍历索引
#possible_key:在这张表上可能用到的索引
#key:实际使用的索引
#key_len:索引中使用的字节数,最大可能长度
#rows:执行查询的行数
#filter:返回结果的行数占需要读取行数的百分比,越大越好
#extra:额外信息



#索引的使用
#对某个col创建索引会明显减少耗时,但是也会相应增加索引的存储
#把col的值创建一个B+树

#索引使用原则
#1.最左前缀法则:如果索引了多列(联合索引),要遵守最左前缀法则,查询从索引的最左列开始,并且不跳过索引中的列
#如果跳过了某一列,跳过后的索引失效(跳过的字段后面的索引失效)
#最左一列必须存在,不存在则全部失效进行全局查询
#联合索引的字段只要全部存在就有效,顺序无所谓

#2.范围查询:联合索引中出现范围查询(>,<),范围查询右侧的列索引失效
#但是如果是>=或者<=就可以正常查询


#索引失效情况一:
#1.在索引列上进行运算操作,例如提取/相加等
#2.字符串类型未加引号
#3.头部模糊匹配索引失效 '%xx'失效 'xx%'不会失效
  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值