该部分讨论where子句的优化,不仅select之中,相同的优化同样试用与delete 和update语句中的where子句;

1: 移去不必要的括号:

 ((a AND b) AND c OR (((a AND b) AND (c AND d))))
-> (a AND b AND c) OR (a AND b AND c AND d) 

2:常量合并:

 (a<b AND b=c) AND a=5
-> b>5 AND b=c AND a=5

3:常量条件去除:

  (B>=5 AND B=5) OR (B=6 AND 5=5) OR (B=7 AND 5=6)
-> B=5 OR B=6

4:indexes 常量表达式只被计算一次:

5:没有where 条件的 单表 Count(*)直接检索Information_schema库中的统计信息(对 myisam 和 memory表)。

6:更早的察觉无效的常量表达式。mysql快速发现select语句中不可能成立的where条件并且返回no rows;

7: 如果没有使用group by 或者聚合函数(count(),min().max()),having子句会被合并到where 子句中;

8:做链接的每个table,一个快速的where子句构造原则是尽可能的跳过更多的行;

9:查询中,所有 constant table 都在其他表之前读取,constant table 定义如下:

1.1 : 一个空表或者只有一行数据的表;

1.2:   一个以主键 或唯一索引为 where条件子句的表,并且所有的Index部分都是和常量表达式比较,不为null(unique index 可能包含多个null);

SELECT * FROM t WHERE primary_key=1;
SELECT * FROM t1,t2WHERE t1.primary_key=1 AND t2.primary_key=t1.id;

10: 通过尝试所有可能性,找到最好的表join组合情况,如果order by子句和group by 子句中的所有列都来至同一张表,那么该表在join时优先read;

11:如果order by子句和 group by子句不同,或者order by Or group by 包含不在查询队列第一张表的中的列,那么会创建 temporary table;

12: 优化器如果认为使用index 会比表scan 更高效,则会选择使用index,scan表会被使用,如果最好的index需要scan多于30%的表记录,但是一个固定的比例不会确定使用table scan或者走index,优化器更加复杂,根据在额外的因数,eg:表的大小,行数,block快的大小;

13: 有些情况下,mysql 可以读取Index 数据而不必回访data file(base table)(索引覆盖);

下面的快速例子:

SELECT COUNT(*) FROM tbl_name;SELECT MIN(key_part1),MAX(key_part1) FROM tbl_name;SELECT MAX(key_part2) FROM tbl_nameWHERE key_part1=constant;SELECT ... FROM tbl_nameORDER BY key_part1,key_part2,... LIMIT 10;
SELECT ... FROM tbl_nameORDER BY key_part1 DESC, key_part2 DESC, ... LIMIT 10;

以下是mysql只查询 index B-Tree,假设index 列值为数值型:
SELECT key_part1,key_part2 FROM tbl_name WHERE key_part1=val;SELECT COUNT(*) FROM tbl_nameWHERE key_part1=val1 AND key_part2=val2;SELECT key_part2 FROM tbl_name GROUP BY key_part1;

以下是用index来避免Filesort

SELECT ... FROM tbl_nameORDER BY key_part1,key_part2,... ;SELECT ... FROM tbl_nameORDER BY key_part1 DESC, key_part2 DESC, ... ;

转载于:https://www.cnblogs.com/onlysun/p/4516756.html

MYsql优化where子句相关推荐

  1. 8.2.1.2 How MySQL Optimizes WHERE Clauses MySQL 优化WHERE 子句

    8.2.1.2 How MySQL Optimizes WHERE Clauses MySQL 优化WHERE 子句本节讨论优化用于处理WHERE子句, 例子是使用SELECT 语句,但是相同的优化应 ...

  2. MySQL 优化 —— WHERE 子句优化

    引言 本文翻译自 MySQL 官网:WHERE Clause Optimization WHERE 子句优化 这一部分我们来讨论对 WHERE 子句的优化处理.本部分的案例都是以 SELECT 语句为 ...

  3. MySQL优化—工欲善其事,必先利其器之EXPLAIN

    mysql explain命令是查询性能优化不可缺少的一部分. explain output columns 列名 说明 id 执行编号,标识select所属的行.如果在语句中没有子查询或者关联查询, ...

  4. 项目中常用的19条MySQL优化

    声明一下:下面的优化方案都是基于 " Mysql-索引-BTree类型 " 的 一.EXPLAIN 做MySQL优化,我们要善用 EXPLAIN 查看SQL执行计划. 下面来个简单 ...

  5. MySQL优化系列(二)--查找优化(1)(非索引设计)

    MySQL优化系列(二)--查找优化(1)(非索引设计) 接下来这篇是查询优化,用户80%的操作基本都在查询,我们有什么理由不去优化他呢??所以这篇博客将会讲解大量的查询优化(索引以及库表结构优化等高 ...

  6. 项目中常用的 19 条 MySQL 优化总结

    作者:zhangqh 地址:segmentfault.com/a/1190000012155267 本文总结了19条关于Mysql的优化方案,本文的优化方案都是基于 " Mysql-索引-B ...

  7. mysql优化篇_MySQL优化篇-查询优化

    可以参考一下官方文档中的解释. 7. 优化 7.1. 优化概述 7.1.1. MySQL设计局限与折衷 7.1.2. 为可移植性设计应用程序 7.1.3. 我们已将MySQL用在何处? 7.1.4. ...

  8. mysql 优化表 3000万_mysql优化:专题三、关于单表查询,可以这么优化

    mysql优化:专题三.关于单表查询,可以这么优化 作者:PHPYuan 时间:2018-10-18 03:41:26 上篇讲解了「mysql优化专题」90%程序员都会忽略的增删改优化(2),相信大家 ...

  9. WEB程序员需要掌握的十大MySQL优化技巧

    WEB开发者不光要解决程序的效率问题,对数据库的快速访问和相应也是一个大问题.希望本文能对大家掌握MySQL优化技巧有所帮助. 1.优化你的MySQL查询缓存 在MySQL服务器上进行查询,可以启用高 ...

最新文章

  1. Android--GridView实现动态文字排版
  2. skyline TerraBuilder 制作MPT方法与技巧(2)(转自)
  3. mysql无法连接server 2008_SQL Server 2008登录错误:无法连接到(local)解决方法
  4. 庖丁解牛ASP.NET3.5控件和组件开发技术-(1)服务器控件概述
  5. 推荐算法概述(01)
  6. BugkuCTF-MISC题简单套娃
  7. 脉冲神经网络基础知识,SpikeProp
  8. 用CSS使DIV水平居中
  9. 金属热处理行业调研报告 - 市场现状分析与发展前景预测
  10. jsp 设置404页面
  11. Centos7.4 安装Docker CE版
  12. 威纶通触摸屏直接与台达变频器进行MODBUS RTU通信的具体方法(图文)
  13. 银行开发专业术语解释和银行系统开发架构的设计思想
  14. DCOM配置出错: 不小心删除DCOM配置中,“我的电脑”属性的Everyone权限导致......
  15. 坚持技术长征,阿里云要定义下一代的云
  16. 2021-2027全球与中国硬质PVC医药泡罩包装市场现状及未来发展趋势
  17. Linux C 指针
  18. 五种常见启发式算法求解TSP问题-总结篇
  19. 2021年电赛E题解析数字模拟信号混合传输收发机(详细介绍)
  20. 给您支招,万网域名一元购,不再是梦

热门文章

  1. C# 字段 属性 方法 三霸主齐上阵
  2. Azure Bill
  3. SC-控制Windows服务的命令
  4. 如何判断浏览器的请求头是不是结束
  5. 微信小程序-04-详解介绍.json 配置文件
  6. vs2008中xlslib与libxls库的编译及使用
  7. bzoj1007题解
  8. beta阶段140字评论
  9. 消费者最关心的就是你的用户体验,以及保证产品品质,保证价格和服务
  10. 好像是第一次在公司外的论坛上公开演讲