精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

從Join的實(shí)現(xiàn)窺探MySQL迭代器

數(shù)據(jù)庫(kù) MySQL
sql_select.cc?內(nèi)函數(shù)bool Sql_cmd_dml::execute(THD *thd)?函數(shù)內(nèi)主要操作為函數(shù)execute_inner?,在函數(shù)execute_inner內(nèi)首先會(huì)對(duì)當(dāng)前的執(zhí)行優(yōu)化操作。

以如下left join查詢(xún)語(yǔ)句為范例:

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

以下初始化數(shù)據(jù):

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?文件內(nèi)解析t1 left join t2 on t1.c=t2.a;對(duì)應(yīng)處理位置。

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對(duì)應(yīng)。

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

入?yún)⑻幚碓诤瘮?shù)T_joined_table_on內(nèi)。

2.移步到函數(shù)PT_joined_table_on

從PT_joined_table_on?聲明可知其繼承PT_joined_table?函數(shù),入?yún)⒆笥冶碣x值為PT_joined_table內(nèi)定義的tr1和tr2。

函數(shù)PT_joined_table_on?將輸入join的左右表加入context內(nèi),并調(diào)用add_join_on將on內(nèi)的條件加入右表,記錄后續(xù)數(shù)據(jù)過(guò)濾條件。

3.執(zhí)行階段函數(shù)do_command(thd)

具體對(duì)應(yīng)執(zhí)行函數(shù)int mysql_execute_command(THD *thd, bool first_level)?,語(yǔ)句解析以及相應(yīng)參數(shù)保存完成后,進(jìn)入函數(shù)int mysql_execute_command(THD *thd, bool first_level)?,此函數(shù)內(nèi)根據(jù)前面解析到的命令類(lèi)型switch (lex->sql_command)?調(diào)用對(duì)應(yīng)的處理函數(shù),如當(dāng)前語(yǔ)句為例查詢(xún)命令解析為lex->sql_command = SQLCOM_SELECT?則進(jìn)入函數(shù)lex->m_sql_cmd->execute(thd)?;其對(duì)應(yīng)為sql_select.cc?內(nèi)函數(shù)bool Sql_cmd_dml::execute(THD *thd)。

4.優(yōu)化器操作,生成access_paths

sql_select.cc?內(nèi)函數(shù)bool Sql_cmd_dml::execute(THD *thd)?函數(shù)內(nèi)主要操作為函數(shù)execute_inner?,在函數(shù)execute_inner內(nèi)首先會(huì)對(duì)當(dāng)前的執(zhí)行優(yōu)化操作。

調(diào)用查詢(xún)表達(dá)式Query_expression?的優(yōu)化器unit->optimize?,此函數(shù)中會(huì)對(duì)該Query_expression?的內(nèi)的每個(gè)查詢(xún)塊query_block分別先進(jìn)行優(yōu)化操作。

查詢(xún)塊內(nèi)函數(shù)bool JOIN::optimize()?內(nèi)會(huì)將每個(gè)查詢(xún)塊優(yōu)化生成查詢(xún)執(zhí)行計(jì)劃 ,具體執(zhí)行函數(shù)為函數(shù)JOIN::create_access_paths()內(nèi)create_root_access_path_for_join()?函數(shù),以當(dāng)前查詢(xún)?yōu)槔诤瘮?shù)create_root_access_path_for_join?內(nèi)根據(jù)參數(shù)條件主要調(diào)用ConnectJoins函數(shù)。

在函數(shù)ConnectJoins?內(nèi)調(diào)用FindSubstructure判斷是join類(lèi)型內(nèi)連接、外連接、半鏈接等類(lèi)型。

根據(jù)FindSubstructure?返回join類(lèi)型調(diào)用相應(yīng)的函數(shù)生成path,當(dāng)前查詢(xún)?yōu)槔龍?zhí)行調(diào)用CreateHashJoinAccessPath生成path。

至此查詢(xún)塊query_block?的優(yōu)化操作和path生成完成,查詢(xún)塊優(yōu)化操作完成后再執(zhí)行整體表達(dá)式Query_expression的優(yōu)化和path的生成,因?yàn)槟壳胺独齼H為一個(gè)查詢(xún)塊,所以當(dāng)前無(wú)需再做整體表達(dá)式的優(yōu)化和path生成。

5.創(chuàng)建迭代器iterator

根據(jù)上一步生成的path調(diào)用CreateIteratorFromAccessPath函數(shù)生成迭代器,用于循環(huán)操作各表數(shù)據(jù)。

在此函數(shù)內(nèi)會(huì)根據(jù)path的類(lèi)型調(diào)用生成不同類(lèi)型的迭代器,以目前范例為例,會(huì)調(diào)用迭代器類(lèi)型為HashJoinIterator。

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

在函數(shù)execute_inner?內(nèi)執(zhí)行完成上述4、5步驟操作后主要繼續(xù)執(zhí)行unit->execute(thd)?函數(shù),其對(duì)應(yīng)執(zhí)行查詢(xún)表達(dá)式函數(shù)bool Query_expression::ExecuteIteratorQuery(THD *thd)。

函數(shù)Query_expression::ExecuteIteratorQuery?內(nèi)主要執(zhí)行m_root_iterator->Init()?,迭代器iterator初始化,當(dāng)前范例為使用HashJoinIterator?類(lèi)型迭代器,因此對(duì)應(yīng)執(zhí)行迭代器函數(shù)HashJoinIterator::Init()。

執(zhí)行m_build_input->Init()?來(lái)初始右表table句柄,用于下面函數(shù)BuildHashTable()?內(nèi)讀取右表數(shù)據(jù)以便初始化返回?cái)?shù)據(jù)存儲(chǔ)表hashtable?,值得注意的是BuildHashTable?函數(shù)內(nèi)會(huì)根據(jù)處理流程調(diào)用SetReadingProbeRowState設(shè)置執(zhí)行狀態(tài)用于引導(dǎo)后續(xù)迭代器iterator執(zhí)行流程。

函數(shù)內(nèi)最后調(diào)用InitProbeIterator?執(zhí)行m_probe_input->Init()初始左表table句柄用于下面函數(shù)讀取左表數(shù)據(jù)。

上面操作完成后執(zhí)行m_root_iterator->Read()?函數(shù),以當(dāng)前查詢(xún)?yōu)榉独鋵?duì)應(yīng)int HashJoinIterator::Read()?函數(shù),執(zhí)行過(guò)程中根據(jù)前面SetReadingProbeRowState?設(shè)置的流程狀態(tài)再選擇對(duì)應(yīng)的操作函數(shù),以當(dāng)前范例則會(huì)循環(huán)讀取左表數(shù)據(jù),而在操作函數(shù)內(nèi)也會(huì)調(diào)用SetReadingProbeRowState?來(lái)設(shè)置迭代器iterator下一步操作,直至迭代器處理完成,其中在函數(shù)Query_expression::ExecuteIteratorQuery,每次讀取一條成功后就會(huì)調(diào)用send_data操作將結(jié)果發(fā)送至客戶(hù)端,直至所有查詢(xún)結(jié)果發(fā)送完成。

7.至此客戶(hù)端收到相應(yīng)顯示查詢(xún)結(jié)果。

責(zé)任編輯:武曉燕 來(lái)源: GreatSQL社區(qū)
相關(guān)推薦

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

2009-04-02 10:23:13

實(shí)現(xiàn)JoinMySQL

2021-08-11 22:18:43

Socket函數(shù)監(jiān)聽(tīng)

2021-11-28 08:03:41

Python迭代器對(duì)象

2016-03-28 10:39:05

Python迭代迭代器

2024-12-10 00:00:10

MySQLJOIN算法

2024-10-28 08:59:26

2009-09-16 17:07:00

linq實(shí)現(xiàn)Left

2013-08-19 16:44:15

.Net

2021-08-11 21:46:47

MySQL索引join

2018-04-03 15:20:07

數(shù)據(jù)庫(kù)MySQLjoin連接

2013-01-08 09:37:26

大數(shù)據(jù)數(shù)據(jù)采集

2020-11-24 08:00:22

JavaScript對(duì)象迭代器

2011-07-13 13:56:06

STL迭代器

2009-12-15 14:58:19

Ruby迭代器

2021-09-07 07:53:43

工具
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

99精品美女| 涩涩涩在线视频| 国产在线一区二区| 久久国产精彩视频| 星空大象在线观看免费播放| 日本电影欧美片| 亚洲精品美国一| 日本不卡一区二区三区视频| 国产成人麻豆精品午夜在线| 久久久久久婷| 欧美大片在线看| 人妻少妇无码精品视频区| 99精品视频在线免费播放 | 一区二区三区的久久的视频| 秋霞午夜在线观看| 视频在线在亚洲| 欧美精品免费在线| 97超碰在线资源| 日本免费精品| 色成年激情久久综合| 男女啪啪免费观看| 成人在线免费看| 成人黄页毛片网站| 91精品国产综合久久香蕉最新版 | 999热视频| 人妻中文字幕一区二区三区| 亚洲黄页一区| 色综合视频一区中文字幕| 三区四区在线观看| 三级精品视频| 日韩av在线免费观看| 欧美一级特黄aaa| 日本一区二区电影| 色综合天天综合网国产成人综合天| 国产激情在线看| 毛片免费不卡| 国产精品少妇自拍| 欧美一区二区在线视频观看| 天天色综合久久| 成人性生交大片免费看中文网站| 成人国产精品免费视频| 18国产免费视频| 日韩和欧美的一区| 日韩av电影院| 中文字幕一区在线播放| 在线亚洲欧美| 91a在线视频| www.日本精品| 国产日韩一区二区三区在线播放 | 亚洲另类激情图| 菠萝菠萝蜜网站| 婷婷成人在线| 亚洲美女精品成人在线视频| 欧美 日本 国产| 日韩成人午夜| 亚洲欧美国产一本综合首页| 91网站免费视频| 伊甸园亚洲一区| 亚洲天堂一区二区三区| www.狠狠爱| 成人aaaa| 欧美成人合集magnet| 曰本女人与公拘交酡| 欧美精品福利| 亚洲**2019国产| 五月婷婷色丁香| 丝袜脚交一区二区| 国产美女精彩久久| 国产视频一区二区三| 国产东北露脸精品视频| 国产精品大全| 欧美女子与性| 国产精品久久久久一区| 日韩视频一二三| www欧美xxxx| 日韩欧美中文字幕在线观看| 成人性做爰aaa片免费看不忠| 韩国精品视频在线观看 | 国产精品福利在线| 99国产在线播放| 不卡视频在线看| 欧美日韩一区二区视频在线观看 | 国产成人av免费看| 国产69精品久久99不卡| 久久精品二区| av福利在线播放| 亚洲精品国久久99热| 欧美激情 国产精品| 高清成人在线| 精品久久人人做人人爽| 欧美特黄一区二区三区| 午夜欧美在线| 欧美综合在线第二页| 在线观看黄色网| 不卡免费追剧大全电视剧网站| 日韩欧美亚洲v片| 另类视频在线| 91成人免费在线视频| 欧美性猛交乱大交| 国产成人精品免费视| 欧美精品免费在线观看| jizz国产在线| 成人黄色大片在线观看| 天堂资源在线亚洲视频| 高清电影在线观看免费| 欧美在线短视频| 北京富婆泄欲对白| 97视频热人人精品免费| 68精品久久久久久欧美| 国产毛片久久久久| 国产亚洲精品7777| 91免费黄视频| 精品视频一区二区三区| 亚洲色图av在线| 日本熟妇毛茸茸丰满| 九九视频精品免费| 日韩欧美精品久久| 中文在线а√天堂| 欧美va天堂va视频va在线| 一本在线免费视频| 久久一二三四| 久久国产精品久久| 日本成人不卡| 欧美一区二区视频在线观看2020| 亚洲av无码一区二区三区人| 最新成人av网站| 高清视频一区| 手机av免费在线| 6080日韩午夜伦伦午夜伦| av网站免费在线看| 性欧美暴力猛交另类hd| 国产欧美在线一区二区| 污污视频在线| 日韩午夜激情免费电影| 国产美女福利视频| 久久99国产精品久久99| 亚洲午夜在线观看| 国产激情欧美| 色婷婷av一区二区三区在线观看 | 韩国午夜理伦三级不卡影院| 日韩精品第一页| 欧洲亚洲两性| 永久免费看mv网站入口亚洲| 香蕉污视频在线观看| 久久综合色天天久久综合图片| 玩弄中年熟妇正在播放| 欧美理论电影在线精品| 欧美亚洲视频在线观看| 婷婷国产在线| 一本大道久久a久久精品综合| 草草影院第一页| 久久久噜噜噜久久狠狠50岁| 欧美一区二区三区电影在线观看| 久久爱91午夜羞羞| 国产一区二区美女视频| 国产在线一级片| 国产精品乱码人人做人人爱| 免费在线观看污网站| 中文字幕午夜精品一区二区三区| 亚洲一区二区在线| 黄网av在线| 亚洲欧美福利视频| 中文字幕激情视频| 亚洲免费看黄网站| 野战少妇38p| 免费一区视频| 亚洲一卡二卡三卡| 日韩精品视频一区二区三区| 久久人人爽人人| 欧美成人免费| 欧美日本一区二区| 麻豆成人在线视频| 99视频精品免费视频| 国产三区在线视频| 日韩欧美午夜| 国产伦精品一区二区三区在线| 三妻四妾的电影电视剧在线观看| 中文字幕欧美亚洲| 亚洲精品97久久中文字幕| 福利精品视频在线| 性爱在线免费视频| 成人黄页毛片网站| 亚州精品一二三区| 亚洲国产电影| 亚洲日本欧美在线| 东京久久高清| 国产欧美日韩最新| 91资源在线观看| 中文字幕精品在线视频| 欧美在线 | 亚洲| 在线观看国产一区二区| 免费在线观看国产精品| 国产婷婷一区二区| 乱码一区二区三区| 视频一区免费在线观看| 大胆欧美熟妇xx| 欧美一级本道电影免费专区| 国产成人精品日本亚洲11| 黄瓜视频成人app免费| 久久69精品久久久久久国产越南| 欧美搞黄网站| 另类专区欧美制服同性| 日韩一卡二卡在线| 欧美无人高清视频在线观看| 久草视频在线免费看| 国产女人18水真多18精品一级做| 91porn在线| 麻豆91在线观看| 欧美精品99久久| 在线国产一区| 午夜精品区一区二区三 | 成人黄动漫网站免费| 日韩高清成人| 欧美亚洲日本黄色| 欧美黑人xx片| 日韩中文字幕欧美| 每日更新在线观看av| 精品国产乱码久久久久久影片| 真实新婚偷拍xxxxx| 亚洲va欧美va天堂v国产综合| 美国黄色片视频| 欧美激情在线一区二区三区| 久久午夜夜伦鲁鲁片| 国产精品18久久久久久久久久久久| 激情综合网俺也去| 亚洲永久在线| 色婷婷av一区二区三区大白胸| 亚洲国产天堂av| 不卡欧美aaaaa| 亚洲色图欧美另类| 黄色小说综合网站| 伊人国产在线视频| 日本午夜一区二区| 熟妇人妻va精品中文字幕| 亚洲国产一区二区三区a毛片| 欧美另类videos| 91精品推荐| 天堂av免费看| 久久久久久美女精品| 亚洲欧洲一区二区| 久久99蜜桃| 欧美精品久久| 欧洲激情综合| 亚洲不卡中文字幕| 亚洲尤物av| 欧美少妇一区| 国产一区二区三区站长工具| 欧洲一区二区日韩在线视频观看免费| 亚洲黄页在线观看| 日本欧美精品久久久| 国产精品美女久久久久久不卡| 欧洲在线视频一区| 国内成人自拍| 黄色www在线观看| 一区二区三区午夜探花| 老司机激情视频| 亚洲人人精品| 熟妇人妻va精品中文字幕| 日韩av中文在线观看| 色片在线免费观看| 国内外成人在线| 蜜桃色一区二区三区| hitomi一区二区三区精品| 国产偷人妻精品一区| 欧美韩日一区二区三区| 欧美一级特黄高清视频| 一区二区在线观看免费| 日韩欧美a级片| 在线精品国精品国产尤物884a | 91精品久久久久久蜜臀| www.精品视频| 精品亚洲aⅴ在线观看| 国产在线日本| 久久久精品欧美| 波多野结衣在线高清| 日韩免费观看av| www.欧美| 九色综合日本| 欧美国产小视频| 拔插拔插海外华人免费| 久久高清免费观看| 日本中文字幕精品—区二区| 国产成a人亚洲| 三上悠亚影音先锋| 亚洲麻豆国产自偷在线| 日韩 欧美 亚洲| 欧美日韩一区二区三区视频| www.黄色av| 最近2019年日本中文免费字幕| 特级毛片在线| 国产精品扒开腿做爽爽爽的视频| 精品视频在线观看免费观看| 久久精品女人的天堂av| 91日韩免费| www.com毛片| 国产一区二区伦理片| 公侵犯人妻一区二区三区| 亚洲欧美日韩国产综合| 亚洲婷婷综合网| 欧美电影精品一区二区| 大地资源中文在线观看免费版 | **欧美日韩在线观看| 3d蒂法精品啪啪一区二区免费| 久久不见久久见免费视频7| 日韩中文字幕在线不卡| 日韩和欧美一区二区| 深田咏美中文字幕| 亚洲男同性恋视频| 中日韩在线观看视频| 亚洲国产精品免费| 二区三区在线观看| 国产精品成人一区| 精品视频自拍| 黄色特一级视频| 国内外成人在线| 国产三级精品三级观看| 欧美日韩在线免费| 欧美一级特黄aaaaaa| 久久最新资源网| 久久精品xxxxx| 日韩精品久久久| 亚洲欧美成人| 丝袜熟女一区二区三区 | 狠狠人妻久久久久久| 精品国产三级a在线观看| 久久综合网导航| 国产日产欧美a一级在线| 国产成人3p视频免费观看| 又粗又黑又大的吊av| 成人性视频网站| 精品视频一区二区在线观看| 日韩精品一区二| 91亚洲天堂| 亚洲一区二区日本| 亚欧美无遮挡hd高清在线视频| wwww.国产| 亚洲国产精品二十页| 中文字幕在线播| 亚洲视频精品在线| 日韩不卡免费高清视频| 欧美精品与人动性物交免费看| 免费亚洲婷婷| 日本一区二区视频在线播放| 在线观看av一区二区| 国产h在线观看| 国产精品自产拍高潮在线观看| 狠狠综合久久av一区二区蜜桃 | 成人黄色在线| 亚洲一区精彩视频| 久久精品国产精品亚洲红杏 | 性久久久久久久久久久久| 亚洲AV无码成人片在线观看| 九九视频直播综合网| 77成人影视| 久久亚洲中文字幕无码| 972aa.com艺术欧美| 免费黄色网址在线| 亚洲人在线视频| 男人天堂久久| 国产精品啪啪啪视频| 成人在线综合网| 国产精品一区二区6| 亚洲欧美三级在线| 国精品产品一区| 特级西西444| 成人av在线播放网址| 亚洲国产成人无码av在线| 一区二区欧美日韩视频| 成人噜噜噜噜| 青青草成人免费在线视频| 久久午夜色播影院免费高清| 中文区中文字幕免费看| 久久成人人人人精品欧| 好吊妞国产欧美日韩免费观看网站| 91传媒久久久| 国产精品嫩草99a| 成人免费视频国产免费麻豆| 日韩av大片在线| 在线电影一区二区| 久久久久久久久免费看无码| 欧美另类变人与禽xxxxx| 国产丝袜视频在线播放| 欧美日韩亚洲免费| 国产精品资源网站| 五月天激情国产综合婷婷婷| 久久激情视频免费观看| 林ゆな中文字幕一区二区| 黄色永久免费网站| 亚洲国产综合视频在线观看| 国产视频二区在线观看| 2019国产精品视频| 日韩极品在线观看| 国产精久久久久久| 在线观看精品自拍私拍| 国内精品国产成人国产三级粉色| 亚洲欧美国产日韩综合| 亚洲线精品一区二区三区八戒| 9色在线视频网站| 狠狠色综合网站久久久久久久| 麻豆精品一二三|