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開關買菜系統隨著網路的發展,人們的生活方式也不斷改變。越來越多的人開始選擇在線購物,其中包括買菜。為了滿足使用者的需求,許多買菜平台推出了線上訂購買菜的功能。而在這些平台中,首頁輪播圖是一個非常重要的功能之一。本文將介紹如何設計首頁輪播圖功能的Java開關買菜系統。一、功能需求分析在設計首頁輪播圖功能之前,我們需要先分析和明
