8.2.1.2 How MySQL Optimizes WHERE Clauses  MySQL 优化WHERE 子句本节讨论优化用于处理WHERE子句, 例子是使用SELECT 语句,但是相同的优化应用于WHERE子句在DELETE和UPDATE子句注意:因为MYSQL优化是不间断的,不是所有的MYSQL 优化都记录在这里你可能尝试重写你的查询让运算操作更快,同时牺牲可读。因为MySQL 做类似的优化自动的,你可以避免这类工作,让查询在一个更加容易懂的和维护的形式。MYSQL遵循一些优化:去除不必要的圆括号:((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)Constant folding:(a<b AND b=c) AND a=5
-> b>5 AND b=c AND a=5恒定条件去除(需要的,因为不断折叠)(B>=5 AND B=5) OR (B=6 AND 5=5) OR (B=7 AND 5=6)
-> B=5 OR B=6索引使用的常量表达式只被评估一次COUNT(*) 在一个简单的表没有一个WHERE 是直接检索从表信息对于MyISAM and MEMORY tables. 这个也用于对于任何NOT NULL 表达式当只用于一个表早期检测到的无效的常量表达式,MySQL 快速的检测一些查询语句是不可能的没有记录返回HAVING 是合并WHERE 如果你不使用GROUP BY 或者聚合函数count(),min()对于每个表在一个关联, 一个简单的WHERE 是被构建来得到一个快速的WHERE 评估对于表也尽快的跳过记录所有的常量表是首先读取 在任何其他表之前在查询里,一个常量表是下面的任何一个:1.一个空表或者一个表只有一条记录2.一个表 用于WHERE 子句在一个主键或者一个唯一键, 所有的index部分是和常量表达式比较,定义为NOT NULL下面所有的表是用于作为常量表:SELECT * FROM t WHERE primary_key=1;SELECT * FROM t1,t2WHERE t1.primary_key=1 AND t2.primary_key=t1.id;最好的关联组合用于表关联是通过尝试所有的可能找到的, 如果所有的列在ORDER BY 和GROUP BY 子句来自同一个表,那个表是首选的当关联时如果有一个ORDER BY 子句和一个不同的GROUP BY 子句,或者如果ORDER BY 或者GROUP BY 包含列来自多个表在关联,会创建一个临时表如果你使用SQL_SMALL_RESULT选项,MySQL 使用一个内存临时表每个表索引是查询的, 最好的索引是被使用除非优化器相信 使用表扫描更加有效。一次扫描被使用基于是否最好的索引跨越了多余30%的表数据,但是一个固定的百分比不会决定选择在使用索引和表扫描。优化现在是更加复杂的基于它的评估额外的因素比如表大小,行的记录数,I/O块大小有些情况下, MySQL 可以读取记录从索引而不需要访问表数据文件。如果所有的列被使用从索引是数值的,只有索引树被使用来解决查询在每行输出之前, 那些不匹配HAVING 子句的会被跳过

转载于:https://www.cnblogs.com/zhaoyangjian724/p/6199155.html

8.2.1.2 How MySQL Optimizes WHERE Clauses MySQL 优化WHERE 子句相关推荐

  1. liunx上mysql源码安装mysql,搞定linux上MySQL编程(一):linux上源码安装MySQL

    [版权声明:尊重原创,转载请保留出处:blog.csdn.net/shallnet,文章仅供学习交流,请勿用于商业用途] 1. 首先下载源码包: ftp://ftp.jaist.ac.jp/pub/m ...

  2. is this mysql server_远程连接MySQL数据库报错:is not allowed to connect to this MYSQL server的解决办法...

    1. 改表法. 可能是你的帐号不允许从远程登陆,只能在localhost.这个时候只要在localhost的那台电脑,登入MySQL后,更改 "mysql" 数据库里的 " ...

  3. linux 修改mysql root密码_Linux mysql如何更改root密码

    说到root密码,很多人想到的是电脑系统的root账号密码,其实mysql也有root密码,那么在Linux系统中,mysql要如何修改root密码呢?特别是忘记了root密码要怎么办? 通过登录my ...

  4. PHP mysql数据迁移,【MySQL】迁移数据目录php-php教程

    move dir # mv /var/libmysql /mnt/data/ vi /etc/my.cnf [mysqld] // 服务器端 datadir=/mnt/data/mysql socke ...

  5. nodejs mysql 异步_Gearman + Nodejs + MySQL UDF异步实现 MySQL 到 Redis 的数据同步

    1, 环境 CentOS, MySQL, Redis, Nodejs Redis是一个开源的K-V内存数据库,它的key可以是string/set/hash/list/...,因为是基于内存的,所在访 ...

  6. mysql dba系统学习(19)配置mysql+lvs+keeplived实现Mysql读操作的负载均衡

    配置mysql+lvs+keeplived实现Mysql读操作的负载均衡 环境: test1192.168.46.131master test2192.168.46.130slave备份test库 t ...

  7. MYSQL添加新用户 MYSQL为用户创建数据库 MYSQL为新用户分配权限

    2019独角兽企业重金招聘Python工程师标准>>> 1.新建用户 //登录MYSQL @>mysql -u root -p @>密码 //创建用户 mysql> ...

  8. 项目性能优化(MySQL读写分离、MySQL主从同步、Django实现MySQL读写分离)

    当项目中数据库表越来越多,数据量也逐渐增多时,需要做数据库的安全和性能的优化.对于数据库的优化,可以选择使用MySQL读写分离实现. 1.MySQL主从同步 1.主从同步机制 1.1.主从同步介绍和优 ...

  9. linux下mysql授权_linux下mysql命令(用户授权、数据导入导出)

    1,linux下启动mysql的命令: 复制代码 代码示例: mysqladmin start /ect/init.d/mysql start (前面为mysql的安装路径) 2,linux下重启my ...

最新文章

  1. HTML5文档结构主体结构 语义结构,html5组织文档结构.pdf
  2. c语言int64编译时错误,错误:编译C程序时未在此作用域中声明uint64_t
  3. linux lvm使用情况,Linux LVM系列(一)lvm使用
  4. java做猜价格游戏,用java做的猜数游戏!
  5. 变参标准函数的重新封装,如printf
  6. rest-assured之Schema validation(包括JSON Schema validation及Xml Schema validation)
  7. oracle vm 安装虚拟机小bug
  8. 不止代码:ybtoj-棋盘分割(二维区间dp)
  9. C++ —— C++数据类型
  10. Python 多线程基本步骤
  11. 惠普打印机故障代码_惠普打印机故障代码
  12. 古今地名对照总表 (按笔划数排序,强烈推荐的资料)
  13. Android 11 wifi adb 连接错误 “Unable to start pairing client.“
  14. 威联通NAS实现定时任务
  15. CX8825 3.1A数码显示车充IC 适用于快充方案,2019年最新方案
  16. C++定义指针数组,数组指针,指针数据
  17. 3种伺服电机控制方式
  18. 2022年 Q1书单:17本书《可口可乐传》《随机漫步的傻瓜》等 | δ星 丨读书笔记与书单 notes...
  19. 第一章-走近群智感知,辨识庐山真面目
  20. 阿里云ECS问题大全【转自阿里云社区】

热门文章

  1. python运行非常慢的解决-python执行太慢
  2. python基础看什么书-2020年入门Python,这7本书一定要看!
  3. python安装教程windows-windows上安装Anaconda和python的教程详解
  4. python编写爬虫的步骤-python学习: 写网络爬虫程序的三个难点
  5. python简单代码hello-PySide教程:一个简单的点击按钮示例
  6. python学成需要多久-小白学python怎么快速入门?多久能完成一个项目?
  7. python保留字-9.Python关键字(保留字)一览表
  8. python在线课程-开始网上在线深度学习python课程
  9. python安装包多大-如何查看安装的pip包大小?
  10. python菜鸟基础教程-终于懂得python入门菜鸟教程