MySQL优化器可选开关详解

MySQL 从5.1开始,提供了关于优化器选项的开关选项。 这样,我们可以强制在优化器糊涂的时候,关闭一些我们认为不该做的事情;或者是当我们想查看优化器为什么要这么选择的时候,可以手动关闭或者打开这些选项来进行优化策略的改变。

MySQL 5.1 增加以下开关:

MySQL 5.5 新增以下开关:

MySQL 5.6 增加以下开关:

1. mrr

2. batched_key_access

3. block_nested_loop

4. index_condition_pushdown

5. use_index_extensions

6. semijoin

mysql> select b.class_name from class as b, student as a where a.class_id = b.id; +------------+ | class_name | +------------+ | xinxi | | xinxi | +------------+ 2 rows in set (0.00 sec)

7. firstmatch

8. loosescan

9. materialization

时间: 2024-07-30 10:18:48

MySQL优化器可选开关详解的相关文章

mySQL优化my.ini配置详解说明

mysql 5.5.13 参数说明:  代码如下 复制代码 [client] character-set-server = utf8 port = 3306 socket = /data/mysql/3306/mysql.sock [mysqld] character-set-server = utf8 user = mysql port = 3306 socket = /data/mysql/3306/mysql.sock basedir = /usr/local/webserver/mysq

mysql优化之日志配置详解

如果你选mysql数据库作为数据持久化的工具,那么就需要一个合理的日志配置,这样有助于排错和数据备份及恢复! 首先我们可以通过下面的MySQL的sql查询正在运行中的日志配置. 刚好我们熟悉一下SHOW VARIABLES LIKE的用法!这个命令是用来查询MySQL运行时配置的语句,LIKE后面的可以接通配符查找! 还有对应的设置语法叫SET GLOBAL,后面我们会用到. mysql> SHOW VARIABLES LIKE '%log%'; +-----------------------

案例:MySQL优化器如何选择索引和JOIN顺序

我们知道,MySQL优化器只有两个自由度:顺序选择:单表访问方式:这里将详细剖析下面的SQL,看看MySQL优化器如何做出每一步的选择. explain select * from employee as A,department as B where A.LastName = 'zhou' and B.DepartmentID = A.DepartmentID and B.DepartmentName = 'TBX'; 1. 可能的选择 这里看到JOIN的顺序可以是A|B或者B|A,单表访问方

mysql 清除relay-log文件方法详解

mysql 清除relay-log文件方法详解 今天在本机的mysql数据目录下发现了许多类似hostname-relay-bin.0000*的文件,该文件一般是在mysql slave实例上存在.主要用途是记录主从同步的信息,正常情况下会自动删除的. 本机未配置过master.slave,对于其来源还真不太清楚.既然是用在slave上的,那就可以放心的删除.删除master实例上的日志文件用reset master,对于slave实例就使用命令:  代码如下 复制代码 reset slave

MySQL优化器:index merge介绍

1. 什么是index merge MySQL优化器如果发现可以使用多个索引查找后的交集/并集定位数据,那么MySQL优化器就会尝试index merge这类访问方式.index merge主要分为两大类,多个索引交集访问(intersections),多个索引并集访问,当然这两类还可以组合出更为复杂的方式,例如多个交集后做并集. 1.1 index merge的限制:range优先 MySQL在5.6.7之前,使用index merge有一个重要的前提条件:没有range可以使用.这个限制降低

探究MySQL优化器对索引和JOIN顺序的选择_Mysql

本文通过一个案例来看看MySQL优化器如何选择索引和JOIN顺序.表结构和数据准备参考本文最后部分"测试环境".这里主要介绍MySQL优化器的主要执行流程,而不是介绍一个优化器的各个组件(这是另一个话题).    我们知道,MySQL优化器只有两个自由度:顺序选择:单表访问方式:这里将详细剖析下面的SQL,看看MySQL优化器如何做出每一步的选择. explain select * from employee as A,department as B where A.LastName

MySQL binlog 远程备份方法详解_Mysql

以前备份binlog时,都是先在本地进行备份压缩,然后发送到远程服务器中.但是这其中还是有一定风险的,因为日志的备份都是周期性的,如果在某个周期中,服务器宕机了,硬盘损坏了,就可能导致这段时间的binlog就丢失了. 而且,以前用脚本对远程服务器进行备份的方式,有个缺点:无法对MySQL服务器当前正在写的二进制日志文件进行备份.所以,只能等到MySQL服务器全部写完才能进行备份.而写完一个binlog的时间并不固定,这就导致备份周期的不确定. 从MySQL5.6开始,mysqlbinlog支持将

CSS中HTML元素定位Position参数可选值详解

position 属性规定元素的定位类型.这个属性定义建立元素布局所用的定位机制.任何元素都可以定位,不过绝对或固定元素会生成一个块级框,而不论该元素本身是什么类型.相对定位元素会相对于它在正常流中的默认位置偏移. 默认值: static 语法: position : static | absolute | fixed | relative 继承性: no 版本: CSS2 JavaScript 语法: object.style.position="absolute" static 元

PHP和MYSQL实现分页导航思路详解

预期效果 思路 通过SQL语句 SELECT * FROM table LIMIT start end 来从MySql数据库 步骤 传入页码p: 根据页码获取数据php->mysql 显示数据+分页条 源码 github 链接 注意点 table,input,button等控件的样式不会继承body,需要重新定义如下 input,label, select,option,textarea,button,fieldset,legend,table{ font-size:18px; FONT-FAM