网易DBA私享会分享会笔记2
mysql索引与查询优化
什么是索引?索引其实是一个目录。通过各种数据结构实现,是(值=>行位置)的映射
索引的作用:
1.提高访问速度
2.实现主键、唯一键逻辑
索引使用场景
数据量特别大的时候,进行全表扫描(无索引),就会很慢,有索引的话就会减少I/O,减少时间(等值查询)
索引的类型:指的是实现索引的数据结构
Btree索引,实际上是B+tree,Mysql甚至绝大部分是RDBMS是最主要的架构
Hash索引:主要是用于Innodb,一些内存索引结构,一家MEMORY存储引擎
RTree索引(淘汰):用于地理位置检索,MyIsam引擎专有
fulltext索引 主要用于MyIsam引擎
Bitmap索引(用的比较少) 原生的mysql不支持位图索引
innodb聚簇索引与二级索引
这个表本身也建成一个索引,按主键依次排序、
二级索引:用户建的索引
先找二级索引-->找到主键--->找到相应内容
索引的代价
插入、修改、删除操作,每一个索引都会变成一个内部事务,索引越长,事务越长(平衡二叉树)、
索引的优势
减少查询I/O 、等值查询/范围查询、有序特性(order by、group by、distinct、max、min)
索引的常用用法
1.根据where查询条件建立索引
select a.b from table_a where c = ?; 在c上建立索引
2.使用联合索引,而不是多个单列索引
select * from tab_a where a=? And b=? //建立一个联合索引 idx_a_b(a,b)
3.联合索引中索引字段的顺序,根据区分度排,区分度大的排前面 //区分度指的是 取值范围更广。比如name,而不是gender
idx_smp(name,gender)
索引的常见用法
1.联合索引能为前缀单列、复列查询提供查询
idx_smp(a,b,c)
_where a=? or where a =? and b=?
查询条件必须从左到右都包含,才能走abc
同样的,合理创建联合索引,避免冗余
查看是否使用索引:explain命令
explain select userid from PRIS_trade where
explain 是确定一个查询如何走索引的最简单有效方法
关注项目:
type:查询access方式
key:本次查询最终使用哪个索引,null为未使用索引
key_len:选择索引使用的前缀长度或者整个长度
rows:可以理解为查询逻辑需要扫描过的记录行数
extra:额外信息,主要指fetch data具体方式
(执行计划)
小结:
对不确定的执行语句的关键语句上线前务必使用explain
Type为null的要格外注意,避免全表扫描
key_len只能用很少一部分前缀的要注意索引字段顺序
Extra只看到Using filesort,Using tempotary都要尽量优化
强制使用索引hint
select * from table1 force index(field1)
select * from table1 ingore index(field1)
网易DBA私享会分享会笔记2的更多相关文章
- 网易DBA私享会分享会笔记1
1.mysql生态+DBA职业发展世界范围流行的开源关系型的数据库关系型数据库:mysql,oracle,sql server,access,postgresql,sqlite,sybase,info ...
- 微软CEO私享会——广东天使会专场圆满落幕
http://www.cnblogs.com/sennly/p/4140976.html 10月17日,微软中国联合广东天使会首期“微软CEO 私享会”在中国微软广东分公司广州太古汇办公室举 ...
- 鹿定制|Lu Couture|鹿定制·高级西装礼服私享定制品牌|芙蓉中路明城国际1425
鹿定制|Lu Couture|鹿定制·高级西装礼服私享定制品牌|芙蓉中路明城国际1425 联系我们
- 子弹短信光鲜的背后:网易云信首席架构师分享亿级IM平台的技术实践
本文原文内容来自InfoQ的技术分享,本次有修订.勘误和加工,感谢原作者的分享. 1.前言 自从2018年8月20日子弹短信在锤子发布会露面之后(详见<老罗最新发布了“子弹短信”这款IM,主打熟 ...
- 轻量级企业私有云 JimV 分享
当前云市场分析 云分两种,公有云.私有云.目前市面上的云产品,对于中小规模的企业来讲,痛点有如下几点: 私有云: 1.VMware ESXi 类: a) 授权费用昂贵: b) 创建虚拟机费时费力: 2 ...
- HBase分享会议笔记
今天参加了一个关于HBase的分享,有一些内容是之前的知识的补充. 之前关于Hadoop家族,包括HBase的内容,可以参考:http://www.cnblogs.com/charlesblc/p/6 ...
- jvm虚拟机分享课笔记
深入理解jvm虚拟机分享 1. jvm执行流程 java-编译-.class—类加载器(随时随地加载)--[进入java虚拟机] 执行引擎—本地方法接口---本地方法库 运行时数据区 2. 运行时数据 ...
- 2014MadCon厦门分享会-笔记(下)
32 <如何与百度互动,不知道这些就不要做SEO了>百度站长平台资深产品运营师 曹丽丽(飞鸟) 33 注意百度站长平台的提醒.如果你不留电话,不留其他联系方式,出问题了,百度怎么提醒你呢? ...
- MySQL数据库性能优化(享学课堂听课笔记)
1.场景: 2张表A表 200W条数据,关联表B表3W条数据,AB有主外键关系. 案例1. 35S 使用关联子查询,查询时间35S 案例2. 19S 使用连表查询 (Left join ,Inner ...
随机推荐
- select的使用(二)
多表查询 /*基本连接*/ select a.Name,b.Name from T_Employee a,T_Department b where a.DepartmentId=b.Id /*内连接, ...
- 动态规划——K背包问题
Problem DescriptionNow you are asked to measure a dose of medicine with a balance and a number of we ...
- wcf系列学习5天速成——第三天 分布性事务的使用 有时间再验证下 不同库的操作
原文地址:http://www.cnblogs.com/huangxincheng/archive/2011/11/06/2238273.html 今天是速成的第三天,再分享一下WCF中比较常用的一种 ...
- JavaScript中的声明提升
JavaScript中变量或者函数的声明会被提升(赋值语句不会被提升)到当前函数主体的顶部,不管这个声明是否出现在不可到达的地方. var test = 1; function f() { if(!t ...
- 动态规划——树形dp
动态规划作为一种求解最优方案的思想,和递归.二分.贪心等基础的思想一样,其实都融入到了很多数论.图论.数据结构等具体的算法当中,那么这篇文章,我们就讨论将图论中的树结构和动态规划的结合——树形dp. ...
- 动态规划——概率dp
所谓概率dp,用动态规划的思想找到一个事件中可能发生的所有情况,然后找到符合要求的那些情况数,除以总数便可以得到符合要求的事件发生的概率.其核心思想还是通过dp来得到事件发生的所有情况,很类似在背包专 ...
- 阿里IPO弃港赴美?
最近,关于阿里巴巴和香港联交所博弈的新闻一直长时间占据了各大科技媒体的头条.9月25日,香港联交所行政总裁在港交所其个人专栏“小加网志”中贴出一则名为<投资者保障杂谈>的博客文章,谈及“香 ...
- C#序列化和反序列化
序列化和反序列化 序列化就是将一个对象的状态(各个属性量)保存起来,然后在适当的时候再获得. 序列化分为两大部分:序列化和反序列化.序列化是这个过程的第一部分,将数据分解成字节流,以便存储在文件中或在 ...
- CodeForces 27D - Ring Road 2 构图2-sat..并输出选择方案
题意 n个数1~n按顺序围成一个圈...现在在某些两点间加边..边可以加在圈内或者圈外..问是否会发生冲突?如果不发生冲突..输每一条边是放圈内还是圈外. 题解 ...
- Django admin进阶
1. ModelAdmin.inlines 将有外键的子类包含进视图 ,实例: class Author(models.Model): name = models.CharField(max_leng ...