国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

從Join的實現窺探MySQL迭代器

數據庫 MySQL
sql_select.cc?內函數bool Sql_cmd_dml::execute(THD *thd)?函數內主要操作為函數execute_inner?,在函數execute_inner內首先會對當前的執行優化操作。

以如下left join查詢語句為范例:

select * from t1 left join t2 on t1.c=t2.a ;

以下初始化數據:

1  DROP TABLE IF EXISTS `t1`;
2 CREATE TABLE `t1` (
3 `a` int DEFAULT NULL,
4 `b` varchar(20) DEFAULT NULL
5 )
6 INSERT INTO `t1` VALUES (1, 'a');
7 INSERT INTO `t1` VALUES (1, 'b');
8 INSERT INTO `t1` VALUES (4, 'a');
9 INSERT INTO `t1` VALUES (5, 'a');
10
11 DROP TABLE IF EXISTS `t2`;
12 CREATE TABLE `t2` (
13 `c` int DEFAULT NULL,
14 `d` varchar(20) DEFAULT NULL
15 )
16 INSERT INTO `t2` VALUES (9, 'i');
17 INSERT INTO `t2` VALUES (1, 'i');
18 INSERT INTO `t2` VALUES (2, 'i');
19 INSERT INTO `t2` VALUES (3, 'i');

1.處理join的yacc入口

在sys_yacc.yy?文件內解析t1 left join t2 on t1.c=t2.a;對應處理位置。

1  table_reference outer_join_type table_reference ON_SYM expr
2 {
3 $$= NEW_PTN PT_joined_table_on($1, @2, $2, $3, $5);
4 }

其中outer_join_type對應。

1  outer_join_type:
2 LEFT opt_outer JOIN_SYM { $$= JTT_LEFT; }
3 | RIGHT opt_outer JOIN_SYM { $$= JTT_RIGHT; }

入參處理在函數T_joined_table_on內。

2.移步到函數PT_joined_table_on

從PT_joined_table_on?聲明可知其繼承PT_joined_table?函數,入參左右表賦值為PT_joined_table內定義的tr1和tr2。

函數PT_joined_table_on?將輸入join的左右表加入context內,并調用add_join_on將on內的條件加入右表,記錄后續數據過濾條件。

3.執行階段函數do_command(thd)

具體對應執行函數int mysql_execute_command(THD *thd, bool first_level)?,語句解析以及相應參數保存完成后,進入函數int mysql_execute_command(THD *thd, bool first_level)?,此函數內根據前面解析到的命令類型switch (lex->sql_command)?調用對應的處理函數,如當前語句為例查詢命令解析為lex->sql_command = SQLCOM_SELECT?則進入函數lex->m_sql_cmd->execute(thd)?;其對應為sql_select.cc?內函數bool Sql_cmd_dml::execute(THD *thd)。

4.優化器操作,生成access_paths

sql_select.cc?內函數bool Sql_cmd_dml::execute(THD *thd)?函數內主要操作為函數execute_inner?,在函數execute_inner內首先會對當前的執行優化操作。

調用查詢表達式Query_expression?的優化器unit->optimize?,此函數中會對該Query_expression?的內的每個查詢塊query_block分別先進行優化操作。

查詢塊內函數bool JOIN::optimize()?內會將每個查詢塊優化生成查詢執行計劃 ,具體執行函數為函數JOIN::create_access_paths()內create_root_access_path_for_join()?函數,以當前查詢為例在函數create_root_access_path_for_join?內根據參數條件主要調用ConnectJoins函數。

在函數ConnectJoins?內調用FindSubstructure判斷是join類型內連接、外連接、半鏈接等類型。

根據FindSubstructure?返回join類型調用相應的函數生成path,當前查詢為例執行調用CreateHashJoinAccessPath生成path。

至此查詢塊query_block?的優化操作和path生成完成,查詢塊優化操作完成后再執行整體表達式Query_expression的優化和path的生成,因為目前范例僅為一個查詢塊,所以當前無需再做整體表達式的優化和path生成。

5.創建迭代器iterator

根據上一步生成的path調用CreateIteratorFromAccessPath函數生成迭代器,用于循環操作各表數據。

在此函數內會根據path的類型調用生成不同類型的迭代器,以目前范例為例,會調用迭代器類型為HashJoinIterator。

6.上述4、5步執行完成后,執行迭代器iterator

在函數execute_inner?內執行完成上述4、5步驟操作后主要繼續執行unit->execute(thd)?函數,其對應執行查詢表達式函數bool Query_expression::ExecuteIteratorQuery(THD *thd)。

函數Query_expression::ExecuteIteratorQuery?內主要執行m_root_iterator->Init()?,迭代器iterator初始化,當前范例為使用HashJoinIterator?類型迭代器,因此對應執行迭代器函數HashJoinIterator::Init()。

執行m_build_input->Init()?來初始右表table句柄,用于下面函數BuildHashTable()?內讀取右表數據以便初始化返回數據存儲表hashtable?,值得注意的是BuildHashTable?函數內會根據處理流程調用SetReadingProbeRowState設置執行狀態用于引導后續迭代器iterator執行流程。

函數內最后調用InitProbeIterator?執行m_probe_input->Init()初始左表table句柄用于下面函數讀取左表數據。

上面操作完成后執行m_root_iterator->Read()?函數,以當前查詢為范例其對應int HashJoinIterator::Read()?函數,執行過程中根據前面SetReadingProbeRowState?設置的流程狀態再選擇對應的操作函數,以當前范例則會循環讀取左表數據,而在操作函數內也會調用SetReadingProbeRowState?來設置迭代器iterator下一步操作,直至迭代器處理完成,其中在函數Query_expression::ExecuteIteratorQuery,每次讀取一條成功后就會調用send_data操作將結果發送至客戶端,直至所有查詢結果發送完成。

7.至此客戶端收到相應顯示查詢結果。

責任編輯:武曉燕 來源: GreatSQL社區
相關推薦

2022-02-07 21:49:06

瀏覽器渲染chromium

2020-11-16 08:10:04

ES6迭代器JavaScript

2024-09-18 13:49:42

2010-12-28 10:15:51

BigtableNoSQL

2010-05-21 17:30:28

2021-08-11 22:18:43

Socket函數監聽

2009-04-02 10:23:13

實現JoinMySQL

2024-12-10 00:00:10

MySQLJOIN算法

2021-11-28 08:03:41

Python迭代器對象

2016-03-28 10:39:05

Python迭代迭代器

2024-10-28 08:59:26

2009-09-16 17:07:00

linq實現Left

2013-08-19 16:44:15

.Net

2013-01-08 09:37:26

大數據數據采集

2018-04-03 15:20:07

數據庫MySQLjoin連接

2021-08-11 21:46:47

MySQL索引join

2020-11-24 08:00:22

JavaScript對象迭代器

2009-12-15 14:58:19

Ruby迭代器

2011-07-13 13:56:06

STL迭代器

2021-09-07 07:53:43

工具
點贊
收藏

51CTO技術棧公眾號

中文字幕在线亚洲精品 | 99re热这里只有精品视频| 日韩福利视频在线观看| 最新亚洲人成网站在线观看| 免费一级欧美在线观看视频| 久久午夜av| 精品一区二区在线观看| 人人网欧美视频| av伊人久久| 欧美激情一区二区在线| 久久精品国产99国产| 久久中文字幕电影| 男人天堂999| 中文字幕国产精品久久| 国产伦理久久久| 99国产**精品****| 欧美黄色免费网站| 91国拍精品国产粉嫩亚洲一区| 欧美网站大全在线观看| 国产高清视频在线观看| 精品一区二区三区在线播放视频 | 国产在线视频在线| 美女性感视频久久| 亚洲a∨一区二区三区| 久久高清国产| 日韩在线播放av| 欧美日韩一卡| 欧美激情videos| 欧美日韩国产传媒| 欧美在线视频a| 久久三级毛片| 爽爽淫人综合网网站 | 黄色一级片av| 91视频一区二区三区| 亚洲无限乱码一二三四麻| 精品一区二区免费在线观看| 中文在线手机av| www.精品av.com| 精品福利久久久| 亚洲熟妇无码一区二区三区| 国产精品剧情在线亚洲| 欧美在线日韩在线| 九色在线观看视频| 亚洲一区二区毛片| 中文字幕亚洲二区| 免费国产黄色网址| 国产成人av电影在线观看| 欧美一区二区高清在线观看| 日本在线观看不卡视频| 手机成人av在线| 久久久影视传媒| 国产激情在线观看视频| 在线成人av网站| 亚洲一区二区日韩| 成人18网站| 污片在线观看一区二区| 亚洲妇熟xxxx妇色黄| 精品日韩一区二区| 91精品1区| 99热手机在线| 亚洲国产精品电影在线观看| 2024短剧网剧在线观看| 亚洲人午夜精品| 日韩精品一区二区三区免费视频| 91精品国产91久久| 国产免费成人| 久久婷婷国产91天堂综合精品| 欧美午夜精品久久久久久浪潮| 污网站在线免费看| 91国产美女视频| 亚洲一区二区免费看| 超碰在线公开97| 欧美一区二区三区公司| 99re8这里有精品热视频8在线| 国内成+人亚洲| 久久久国产精品麻豆| 69av亚洲| 欧美精品videos性欧美| 久久综合影音| 国产私人影院| 亚洲福利视频网站| 国内黄色精品| 一级特黄妇女高潮| 天天影视色香欲综合网老头| 欧美magnet| 国产一区二区视频在线观看| 国产成人综合自拍| 黄色片免费在线| 欧美理论片在线观看| 久久久久国产精品一区三寸 | 国产精品福利电影一区二区三区四区| 亚洲免费视频一区二区三区| 美日韩精品免费观看视频| 激情丁香综合| 91中文字幕网| 日韩中文字幕在线视频播放| 日韩综合小视频| 小水嫩精品福利视频导航| 欧美美最猛性xxxxxx| 韩国成人精品a∨在线观看| 国产小视频在线观看| 欧美性一区二区三区| 北条麻妃国产九九精品视频| 免费在线观看av电影| 国产精品18毛片一区二区| 1区2区3区欧美| 久久精品97| 一区二区三区av在线| 91成人国产精品| 日韩欧美一区二区三区免费看| 中文字幕在线观看第三页| 一区二区欧美在线| 久久精品久久综合| 日本电影在线观看网站| 91九色单男在线观看| 亚洲精品国产无套在线观| 136国产福利精品导航网址应用| 国产一二三四五| 亚洲国产精品小视频| 中文字幕在线免费播放| 91精品国产91久久久久久| 日韩成人午夜电影| 2222www色视频在线观看| 91精品国产一区二区| 成人在线免费电影网站| 国产精品露脸自拍| 日本午夜一本久久久综合| 亚洲美免无码中文字幕在线| 日韩欧美久久久| 精品99一区二区| 久久爱.com| 永久免费看av| 亚洲国产精品电影在线观看| 国产欧美日韩一级| 777电影在线观看| 99理论电影网| 欧美伊人精品成人久久综合97| 亚洲区综合中文字幕日日| 伊人国产在线看一| 999国内精品视频在线| 色婷婷香蕉在线一区二区| 91精品1区| 成a人片在线观看www视频| 懂色中文一区二区三区在线视频| 一本久道中文字幕精品亚洲嫩| 国内精品久久久久久久影视蜜臀 | 国产玉足脚交久久欧美| 亚洲欧美日韩高清| 成人网男人的天堂| 久久69av| 99免费视频| 国产精品爽黄69天堂a| 高潮白浆女日韩av免费看| 欧美破处大片在线视频| 国产在线观看a| 日本一二三区视频在线| 国产亚洲精品高潮| 国产精品免费久久| 日韩在线二区| 欧美性猛交xxx乱大交3蜜桃| 欧美三级午夜理伦三级老人| 北条麻妃在线一区二区| 亚洲精品国产第一综合99久久| 欧美日韩国产精品一区二区亚洲| 综合久久2o19| 无码人妻精品一区二区三区在线| 欧美性在线视频| 91福利视频久久久久| 激情五月婷婷综合| 国产精品极品| 视频国产在线观看| 日本成人性视频| 91精品成人久久| 欧美日韩大陆一区二区| 国产成人精品免费在线| 九九久久婷婷| 亚洲wwwww| 中文字幕第80页| 国产精品久久久对白| 亚洲色图色老头| 国产精品国产三级国产aⅴ无密码| 欧美阿v一级看视频| 男女视频在线| 国产精品一区二区羞羞答答| 国产精品日韩高清| 久久亚洲国产精品| 欧美性xxxxx极品少妇| 成人国产免费视频| 欧美久久一区| 国产日韩在线观看视频| 国产一级免费在线观看| 黄色免费视频大全| 99re国产视频| 久久精品视频在线播放| 欧美午夜视频一区二区| 成人丝袜高跟foot| 欧美区一区二| 久久大胆人体视频| 日本免费一区二区三区四区| 青青久在线视频|