MySQL优化器可选开关详解_MySQL
bitsCN.com
MySQL 从5.1开始,提供了关于优化器选项的开关选项。 这样,我们可以强制在优化器糊涂的时候,关闭一些我们认为不该做的事情;或者是当我们想查看优化器为什么要这么选择的时候,可以手动关闭或者打开这些选项来进行优化策略的改变。
MySQL 从5.5 和 5.6 开始,增加了更多的开关选项。 以便使查询更加优化。 下面我来一个一个解释下这些优化开关的含义以及用途。
MySQL 5.1 增加以下开关:
index_merge
1). index_merge_intersection
如果有两个单独的索引都可用,但是其中任何一个都不是最优化的,那么优化器选择合并两个索引并且在他俩的结果集中做一个交集,然后根据这个交集对磁盘数据进行匹配。
2). index_merge_union
用于OR,把所有相关索引连接起来,找到记录对应的ROWID,然后根据ROWID获取磁盘上的数据。
3). index_merge_sort_union
用于OR,把所有相关索引连接起来,找到记录对应的ROWID,并且好顺序,然后根据ROWID获取磁盘上的数据。
MySQL 5.5 新增以下开关:
engine_condition_pushdown
只用于NDB引擎。
不开启: 所有数据节点的数据都发送到SQL节点来处理。
开启后: 按照WHERE条件过滤后的数据发送到SQL节点来处理。
MySQL 5.6 增加以下开关:
1. mrr
mrr_cost_based
这个是从MySQL 5.6 开始增加的开关。 意思是针对普通索引把资源利用最大化,主要是针对多列索引,也叫组合索引来做基本扫描,然后对匹配的记录按照主键排序,这样按照有序的主键顺序从磁盘上扫描需要的全部记录。 根本功能是把对磁盘的随机扫描转化为顺序扫描。
主要针对的是数据太大,放不到CACHE里面(比如INNODB,或者MYISAM)。 目前对全索引扫描意义不大。
2. batched_key_access
(在JOIN BUFFER POOL里)当内表被扫描后,针对扫描到的记录,找到对应的主键值并且一次性交给MRR接口。省掉了频繁跟磁盘交互的IO部分。
3. block_nested_loop
(在JOIN BUFFER POOL里)当内表被扫描后,针对原来的记录加上一个是否匹配标记,生成新的记录。这样下次外表的值如果再来遍历内表,就只扫描不匹配的即可。省掉部分CPU资源。
4. index_condition_pushdown
不开启: 对于组合索引(A,B)来说,如果A可以用到索引,B不能用到,那么只能在索引树上找到A,然后再用A对应的指针到磁盘上遍历数据。
开启后: 同样对于组合索引(A,B)来说,如果A可以用到索引,B不能用到,那么在索引树上找到A,然后再通过B的过滤条件在索引树上进行过滤,删选后的指针到磁盘上遍历数据。
但是ICP并不能把随机扫描变为顺序扫描,只是减少了对磁盘交互的IO部分。
5. use_index_extensions
主要用于INNODB的第二索引,也就是普通的索引,把索引中包含的主键值利用到。比如主键为(a,b),索引为(c). 如果用到了索引c,那么把索引变成(c,a,b) 这样,就可以用到新的组合索引了。
不过这种场合用的也比较少,一般是根据组合主键中的第一个字段和普通索引一起来做检索的时候。
6. semijoin
表示在连接的时候内表去重的过程 。
比如对以下的查询,a.class_id 就只需要扫描一次和b.id相同的记录就可以不在继续了。因为不需要关心b表里面是否有多少相同的class_id,只需要知道有还是没有就行了。
所以一般用在对子查询的优化居多。
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
subquery_materialization_cost_based
把内表去重然后生成有对应索引的临时表(有点类似其他数据中的物化视图),然后通过外表的对应键值遍历这张临时表。
主要针对不能抓华为半连接的检索类型。 bitsCN.com

热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

使用win10系统连接蓝牙时,突然发现蓝牙连接选项不见了,到处都找不到,或者不能使用蓝牙功能。win10蓝牙开关不见了怎么办?对于困扰这个问题的用户,来看看win10系统蓝牙开关不见的详细恢复教程~。win10系统蓝牙开关找回教程不见了:1.更新蓝牙驱动器,安装后重启。如果仍然找不到蓝牙开关选项。2.首先按下键盘上的Win+R,打开操作窗口输入services.msc并打开。3.进入服务界面后,我们向下搜索,找到蓝牙支持服务。4.双击打开【蓝牙支持服务】,停止服务状态,点击【启动】。5.正在启动

Windows11中的PhoneLink正在获得另一个有用的功能。据报道,在不久前获得iPhone集成后,Microsoft正在努力带来一个开关,让您更轻松地从PC控制手机。或者,至少到目前为止是这样。这家总部位于雷德蒙德的科技巨头在Dev频道中为Windows内部人员推出了一个版本。它被称为Build23590,虽然它带来了StepsRecorder在这里被弃用的悲伤消息,但“设置”应用程序中有一个有趣的隐藏开关。新的切换开关显示为“允许这台电脑访问您的移动设备”。仍然不完整,但这是好事的标志

在使用win10系统进行蓝牙连接的时候,突然发现蓝牙连接选项不见了,在哪都找不到,或者无法使用蓝牙功能了,这个问题需要怎么去解决呢,快来看看详细的教程吧~win10蓝牙开关不见了:1、更新蓝牙的驱动,然后安装完成后重启。若还是找不到蓝牙开关选项。2、首先按下键盘上的打开运行窗口输入并打开。3、进入到服务界面后,我们向下查找,找到。4、双击打开,服务状态为已停止,点击就行了。5、正在启动中,启动完成就行了。6、蓝牙开关不见了很可能使用户在清理系统垃圾文件的时候将其重要文件删除了,可以尝试重装系统。

如何实现购物车功能的Java开关买菜系统随着科技的发展和人们日常生活的便利化,越来越多的人开始选择在网上购物。无论是食品、衣物还是家电,都可以通过网络轻松购买。而为了提供更好的购物体验,很多购物网站和应用程序都引入了购物车功能。购物车功能是一种方便用户将所需商品加入购物车,随时查看、编辑和选择购买的功能。对于购物网站和应用程序而言,购物车功能不仅可以提高用户

很多小伙伴都会在电脑上时不时使用录屏软件,但是有时候也会不想开启却还是打开了,那么他的开关在什么地方呢?下面就给大家带来详细的开关位置详情。win10录屏开关在哪:1、进入系统录屏软件xbox点击左下角齿轮即可看到“使用游戏DVR录制游戏剪辑和屏幕截图”的开关。2、下拉可以在后台录制中看到“当我玩游戏时进行后台录制”的开关。3、再往下可以在音频中看到“录制游戏剪辑同时录制音频”和“当我录制游戏剪辑时录制我的麦克风”的开关。4、结束录制后下拉在保存捕获中可以看到“打开文件夹”的开关。还有其他问题的

本站8月17日消息,公牛集团今日发布了2023年半年度报告,上半年实现营业收入75.92亿元,同比上涨11.03%;归母净利润18.22亿元,同比上涨20.83%;基本每股收益2.05元。本站附主要财务指标如下:报告显示,上半年,公牛集团电连接业务实现收入36.77亿元,同比增长4.66%;智能电工照明业务实现收入37.71亿元,同比增长15.54%;新能源业务实现收入1.31亿元,同比增长195.21%。在报告期间,公牛集团的核心业务集中在电连接、智能电工照明和新能源领域主要的电连接产品包括转

当我们在日常使用win7系统的WiFi功能时,经常会遇到无法开启的问题,这种情况需要重新打开WiFi,现在就给大家介绍一下win7系统下WiFi开关的功能位置。win7wifi开关在哪1、点击电脑右下角的WiFi图标,选择“打开网络和共享中心'2、打开后点击左侧的“更改适配器设置”3、打开后右键无线网络,这里选择“启动”即可。

随着电商的快速发展,人们购买日常生活用品的方式也逐渐发生了变化。如今,越来越多的人选择在手机上下单买菜,并通过配送服务将商品送到家门口。为了满足这一需求,开发一个具备配送管理功能的Java开发买菜系统是很有必要的。本文将介绍如何实现这个功能。一、需求分析在实现配送管理功能之前,首先需要进行需求分析。了解用户的需求是开发一个成功的系统的关键。以下是购买买菜系统
