查询优化
来源:互联网 发布:三星软件商店下载 编辑:程序博客网 时间:2024/05/18 00:09
优化数据访问
不要请求多余的数据
- 只查询需要的记录
- 只查询需要的列
- 不要重复查询相同数据
不要使MySQL扫描额外的记录
对于MySQL,最简单的衡量查询开销有三个指标
1. 响应时间
2. 扫描的行数
3. 返回的行数
响应时间
响应时间包括服务器时间和排队时间。服务器时间是指数据库处理这个查询真正花了多长时间。排队时间是指服务器因为等待某些资源而没有真正执行查询的时间。
一般最常见和重要的等待是I/O和锁等待,但实际情况更复杂
扫描的行数和返回的行数
理想情况下扫描的行数和返回的行数应该是相同的
扫描的行数的访问类型
访问类型从慢到快依次是 全表扫描、范围扫描、唯一索引查询、常数引用等。
一般MySQL能够使用下面三种方式应用WHERE条件,从好到坏依次为:
- 在索引中使用WHERE条件过滤不匹配记录。这是存储引擎层完成的
- 使用索引覆盖扫描来返回记录,直接从索引中过滤不需要的记录并返回命中结果。这是在MySQL服务器层完成的,但不雪再回表查询记录。
- 从数据表中返回数据,然后过滤不满足条件的记录。这在MySQL服务器层完成,MySQL需要先从数据表读出记录然后过滤。
重构查询
切分查询
- 分散服务器压力
- 减少锁的持有时间
- 减少MySQL复制的延迟
分解关联查询
- 让缓存的效率更高
- 分解后,执行单个查询可以减少锁的竞争
- 在应用层做关联,可以更容易对数据库进行拆分,更容易做到高性能和可扩展
- 查询本身效率也可能会有提升
- 可以减少冗余记录的查询
- 避免了MySQL的潜逃循环关联
查询执行的基础
执行路径
阅读全文
0 0
- 查询优化
- 查询优化
- 查询优化
- 查询优化
- 查询优化
- 查询优化
- 优化查询
- 查询优化
- 查询优化
- 优化查询
- 查询优化
- 优化查询
- 查询优化
- 查询优化【SQL优化】
- 数据库优化:优化查询
- MySQL优化---查询优化
- MySQL查询优化之查询优化器
- 嵌套查询的查询优化
- js 自定义extend函数
- 基于ansj+word2vector进行相近词发现DEMO
- jzoj 3522 迷宫花园
- SQL中的left outer join,inner join,right outer join用法详解
- 使用unity3d搭建简单的场景以及第一人称角色的控制
- 查询优化
- 程序写入数据库中文乱码问题
- mysql的timestamp查日期0707
- git常用命令,github作为远程库
- 以动画实现 水波纹扩散效果.
- Ubuntu下安装python插件PyDev出现安装完不显示问题
- 【小白成长史】在js中获取session中的数据
- 数据迁移时出现php扩展问题igbinary
- 长方形去重排序