1.MySQL 子查询实现很糟糕,最糟的是包含 in 的子查询 //子查询改为连接查询
2. min()  有时候可以改用 limit 1
查询优化器的提示:
1.high_priority , low_priority // 多语句访问一张表的优先级,对表锁有效,对 行锁的存储引擎无效2.delayed // 对 insert, replace 有效, 该语句立刻返回给客户端,并将插入的行数据放入缓冲区,然后在表空的时候再将数据插入。对日志系统非常好3.straight_join // 这个提示可以放在select 关键字后面(让所有表按出现的顺序关联),也可以放在任何关联表之间(固定前后2张表的关联顺序)4.sql_samll_result,sql_big_result //对select 有效,告诉优化器对 group by 和 distince 如果使用临时表排序,sql_samll_result结果集小,使用内存临时表,
sql_big_result 结果集很大,使用磁盘临时表5.sql_buffer_result  //告诉优化器将查询结果放入一个临时表,然后尽可能的释放表锁。与客户端缓存不同6.sql_cache 和 sql_no_cache //结果集是否应该缓存在查询缓存中7.sql_calc_found_rows //让 MySQL 返回的结果集包含更多信息8.for update 和 lock in share mode // 控制select语句的锁机制,只针对行锁存储引擎有效。对符合条件的数据行加锁,9.using index, ignore index, force index // 告诉优化器使用或者不适用哪些索引来查询记录for order by , for group by 来指定是否对排序和分组有效force index 和 use index 基本相同,force index 会告诉优化器全表扫描的成本远高于索引扫描
优化器的一些参数:1.optimizer_search_depth //控制优化器在穷举执行计划时的参数,如果查询长时间处于 statistic ,可以考虑2.optimizer_prune_level  //默认打开,优化器根据扫描行数是否跳过某些执行计划3.optimizer_swich //这个参数包含了开启或者关闭优化器某些特性的标志位,控制索引合并的特性
1.优化 count(),可以统计行数,也可以统计某个列的数量(要求非空)MyISAM 没有 where 的话 count() 可以会更快,也就是说 count 全表很快,先count 全表,再减去count小的count() 里面是表达式的话,就是统计表达式有值的结果集
计算同一列不同值的数量:select if (color = 'red' , 1,0) red ...select count( color = 'red' or null) red ...2.优化关联查询确保 on, using 列上有索引确保 group by , order by 只涉及一个表的列3.优化子查询尽可能使用关联4.优化 group by 和 distinct
关联查询分组,通常采用表的标识符 进行分组 效果比较好
如果 group by 没有指定排序,默认按分组标识符排序
如果不关心结果集的排序,而这种默认排序又导致了文件排序,可以用order by null5.limit 优化
通过延迟关联,先通过覆盖索引找到相应的主键。再根据主键获取原表数据
offset 太大问题 : 如 limit 1000,20 改成  id >1000, limit 206.优化 sql_calc_found_rows
limit 语句中加上 sql_calc_found_rows,可以去掉 limit 以后满足的行数(不确定)7.优化 union
除非确实需要消除重复的行,否则一定使用 union all。如果没有all,MySQL 会给临时表加上distince 选项,会导致对临时表进行唯一性检查,代价非常高

6.5 MySQL 查询优化器的局限性

6.5.1 关联子查询









6.5.2 union 的限制

6.5.3 索引合并优化





6.5.8最大值和最小值优化



6.6 查询优化器的提示(hint)








6.7 优化特定类型的查询

6.7.1 优化 count() 查询




6.7.2 优化关联查询

6.7.4 优化 group by 和 distinct



6.7.5 优化 limit 分页


6.7.6 优化 sql_calc_found_rows

6.7.7 优化 union 查询

6.7.9 使用用户自定义变量















6.8 学习案例

6.8.1 使用 MySQL构建一个队列





6.8.2 计算两点之间的距离



6.8.3 使用用户自定义函数



http://www.cnblogs.com/heat-man/p/4945708.html

http://blog.sina.com.cn/s/blog_5f66526e0101dd7g.html

6.高性能MySQL --- 查询性能优化(2)相关推荐

  1. 高性能MySQL——查询性能优化

    在数据库设计中,如果查询写得很糟糕,即使库表结构设计再合理,索引再合理也无法实现高性能. 1.优化数据访问 查询性能低下最基本的原因是访问的数据太多.对于低效的查询,通过以下两步来分析总是很有效: 确 ...

  2. 高性能MySQL -- 查询性能优化

    一般来说一个好的程序:查询优化,索引优化,库表结构要同时进行优化.今天我们来讲一下查询优化. 我们需要对MySQL的架构有基本认知,所以这里贴一张图大家看看: 图片来自于<小林coding> ...

  3. MySQL查询性能优化七种武器之索引下推

    前面已经讲了MySQL的其他查询性能优化方式,没看过可以去了解一下: MySQL查询性能优化七种武器之索引潜水 MySQL查询性能优化七种武器之链路追踪 今天要讲的是MySQL的另一种查询性能优化方式 ...

  4. MySQL 查询性能优化

    如果把查询看作是一个任务,那么它由一些列子任务组成,每个子任务都会消耗一定的时间.如果要优化查询,实际上要优化其子任务,要么消除其中一些子任务,要么减少子任务的执行次数.通常来说,查询的生命周期大致可 ...

  5. Java和Mysql——查询性能优化

    文章目录 前言 一.查询效率缓慢原因 二.解决方案 总结 前言 最近在解决用户反馈的时候发现有些用户查询效率太慢或者直接就查询sql超时(这里配的是默认15秒),然后就在考虑如何在百万级用户的情况下优 ...

  6. MySQL查询性能优化七种武器之链路追踪

  7. mysql获取查询策略语句_MySQL数据库查询性能优化策略

    优化查询 使用Explain语句分析查询语句 Explain 用来分析 SELECT 查询语句,开发人员可以通过分析 Explain 结果来优化查询语句. 通过对查询语句的分析,可以了解查询语句的执行 ...

  8. mysql 主键查询性能_MySQL查询性能优化(精)

    MySQL查询性能优化 MySQL查询性能的优化涉及多个方面,其中包括库表结构.建立合理的索引.设计合理的查询.库表结构包括如何设计表之间的关联.表字段的数据类型等.这需要依据具体的场景进行设计.如下 ...

  9. 读薄《高性能MySql》(四)查询性能优化

    读薄<高性能MySql>(一)MySql基本知识 读薄<高性能MySql>(二)Scheme与数据优化 读薄<高性能MySql>(三)索引优化 读薄<高性能M ...

  10. 高性能Mysql之查询性能优化

    高性能Mysql之查询性能优化 为什么查询速度会慢 慢查询基础:优化数据访问 重构查询的方式 MySQL查询优化器的局限性 优化特定类型的查询 即使我们设计了一个最优的库表结构,建好了最好的索引,如果 ...

最新文章

  1. SQL注入(SQL注入(SQLi)攻击)攻击-布尔盲注
  2. V-3-3 在没有vCenter的情况下,复制虚拟机
  3. 在php中使用kind,KindEditor 4.x在PHP中的应用实例!
  4. 信息学奥赛一本通 1105:数组逆序重存放 | OpenJudge NOI 1.6 04
  5. rem,em,px的区别
  6. acme编辑器linux版,CAD迷你编辑器
  7. js浏览器页面生命周期
  8. 这家云提供商虽挫败勒索攻击,但仍需支付赎金
  9. findwindowex子窗口类型有哪几种_游戏场景该怎么画?来参考一下不同的类型吧
  10. 20180602_Eclipse配置Maven的本地仓库和阿里云镜像
  11. 【图像融合】基于matlab curvelet变换图像融合【含Matlab源码 776期】
  12. 《深度学习:走向核心素养》学习体会
  13. java socket 超时_Java Socket超时浅析
  14. 测试用例(功能用例)——完整demo(一千多条测试用例)
  15. 大数据常见英文词汇(待更新)
  16. 过敏性鼻炎、感冒、哮喘
  17. 怎么用计算机向手机上传照片,老司机教你怎么把手机的照片传到电脑
  18. 图像质量的主客观评价准则
  19. java语言程序设计勇_自考Java语言程序设计(一)串讲笔记
  20. 永辉系统服务器,永辉超市供应商服务系统(永辉超市供应商供零系统)

热门文章

  1. PHP常用设计模式汇总
  2. P3372 【模板】线段树 1 区间查询与区间修改
  3. expr命令的一些用法
  4. AndroidStudio配置gradle,让App自动签名
  5. kafka常用的操作命令
  6. xp系统运行asp.net时候出现“服务器应用程序不可用”,vs2005无法启动调试
  7. linux平台 oracle 数据库 安装文档
  8. .NET : 如何动态根据一个业务实体类型创建XSD架构文件
  9. R|数据处理|merge数据详解
  10. WPF 获取控件模板中的控件