电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁技術文章
文章詳情頁

淺談mysql join底層原理

瀏覽:8日期:2023-10-17 18:36:04
目錄join算法驅動表和非驅動表的區別1、Simple Nested-Loop Join,簡單嵌套-無索引的情況2、Index Nested-Loop Join-有索引的情況3、Block Nested-Loop Join ,join buffer緩沖區緩沖區大小數據量大的表和數據量小的表如何選擇連接順序細節join算法

mysql只支持一種join算法:Nested-Loop Join(嵌套循環連接),但Nested-Loop Join有三種變種:

Simple Nested-Loop Join,簡單嵌套 Index Nested-Loop Join,索引嵌套 Block Nested-Loop Join ,join buffer緩沖區嵌套(臨時表)驅動表和非驅動表的區別

驅動表就是主表,非驅動表就是從表,看以下sql就知道了,A就是驅動表,B就是非驅動表。

select * from A left join B

A join B 連表時,一定先查A表再查B表嗎?

答案是不一定,因為mysql內部有一個優化器,它會根據你查詢語句做一些優化,先查哪張表也是由優化器決定的,但可以肯定的是,先查詢的那張表就是驅動表,反之就是非驅動表;關于是那張表先查的問題,我們通過看執行計劃來得出結果;在前面加上explain關鍵字即可;

explain select * from A join B;1、Simple Nested-Loop Join,簡單嵌套-無索引的情況

A left join B: ,每次都是全表匹配,A表的每行數據都全表匹配一次B表,也就是說,假如我A表有10條數據,B表有1000條數據,那么查詢的時候掃描次數就是10*1000,也就說查詢時需要掃描10000遍才能得出數據;

淺談mysql join底層原理

2、Index Nested-Loop Join-有索引的情況

select * from A join B on A.id=B.id where A.id = 1:在查詢時,驅動表A會根據關聯字段的索引進行查找,當在索引上找到符合的值,在回表進行查詢,也就是說得匹配到索引后才會才會進行回表查詢;如果非驅動表B的關聯關聯字段B.id是主鍵的話,性能會非常高,如果不是主鍵,會進行多次回表查詢,先關聯索引,然后根據二級索引的主鍵id進行回表查詢,性能上比主鍵要慢;

淺談mysql join底層原理

3、Block Nested-Loop Join ,join buffer緩沖區

如果有索引,會選取Index Nested-Loop Join進行連表,如果join列沒有索引,就會采用Block Nested-Loop Join ,join buffer,在驅動表和非驅動表中間有個buffer的緩沖區,在查詢時先將驅動表的數據緩存到buffer緩沖區內,然后批量與非驅動表進行匹配,這是一種將多次比較合并為一次比較的優化方案,注意:這里緩存的不只是關聯表的列,select 后面的列也會緩存起來;

淺談mysql join底層原理

緩沖區大小

默認情況下buffer緩沖區join_biffer_size的容量為256k,如果說你的數據空間大于256k,就無法使用緩沖區了,轉為最簡單的循環嵌套Simple Nested-Loop Join,但是我們可以手動調整緩沖區大小來裝入大容量的數據;查看join_biffer_size的sql:show variables like ’%join_biffer_size%’

數據量大的表和數據量小的表如何選擇連接順序

最好由小表去連接大表,這樣會減少掃描次數;比如大表有1000條數據,小表只有10條數據,那么最好的連接方式為:小表 join 大表;為什么要這么做呢?

如果是大表 join 小表,假如我們的數據在大表的第999行,那么查詢數據的時候就至少得掃描999次才能查出來; 如果是小表 join 大表,假如我們的數據在小表的第9行,細節 連表查詢的時候,最好不要超過三張表,因為需要join的字段,數據類型必須一致 優先使用內連接來連表,外連接查詢數據消耗的性能比內連接要高; 確保關聯查詢中on 后面的列或者 using()中的字段帶有索引,連表時可加快數據訪問

到此這篇關于淺談mysql join底層原理的文章就介紹到這了,更多相關mysql join底層原理內容請搜索好吧啦網以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持好吧啦網!

標簽: MySQL 數據庫
相關文章:
主站蜘蛛池模板: 【中联邦】增稠剂_增稠粉_水性增稠剂_涂料增稠剂_工业增稠剂生产厂家 | 郑州水质检测中心_井水检测_河南废气检测_河南中环嘉创检测 | 新能源汽车电池软连接,铜铝复合膜柔性连接,电力母排-容发智能科技(无锡)有限公司 | 泉州陶瓷pc砖_园林景观砖厂家_石英砖地铺石价格 _福建暴风石英砖 | 亿立分板机_曲线_锯片式_走刀_在线式全自动_铣刀_在线V槽分板机-杭州亿协智能装备有限公司 | 企典软件一站式企业管理平台,可私有、本地化部署!在线CRM客户关系管理系统|移动办公OA管理系统|HR人事管理系统|人力 | 活性炭-果壳木质煤质柱状粉状蜂窝活性炭厂家价格多少钱 | 集装箱箱号识别_自重载重图像识别_铁路车号自动识别_OCR图像识别 | 国际船舶网 - 船厂、船舶、造船、船舶设备、航运及海洋工程等相关行业综合信息平台 | 合肥风管加工厂-安徽螺旋/不锈钢风管-通风管道加工厂家-安徽风之范 | CCE素质教育博览会 | CCE素博会 | 教育展 | 美育展 | 科教展 | 素质教育展 | 飞歌臭氧发生器厂家_水处理臭氧发生器_十大臭氧消毒机品牌 | 土壤墒情监测站_土壤墒情监测仪_土壤墒情监测系统_管式土壤墒情站-山东风途物联网 | EFM 022静电场测试仪-套帽式风量计-静电平板监测器-上海民仪电子有限公司 | 座椅式升降机_无障碍升降平台_残疾人升降平台-南京明顺机械设备有限公司 | 断桥铝破碎机_发动机破碎机_杂铝破碎机厂家价格-皓星机械 | 气动调节阀,电动调节阀,自力式压力调节阀,切断阀「厂家」-浙江利沃夫自控阀门 | 不锈钢列管式冷凝器,换热器厂家-无锡飞尔诺环境工程有限公司 | 山东聚盛新型材料有限公司-纳米防腐隔热彩铝板和纳米防腐隔热板以及钛锡板、PVDF氟膜板供应商 | 品牌广告服务平台,好排名,好流量,好生意。 | 蓝莓施肥机,智能施肥机,自动施肥机,水肥一体化项目,水肥一体机厂家,小型施肥机,圣大节水,滴灌施工方案,山东圣大节水科技有限公司官网17864474793 | 工控机,嵌入式主板,工业主板,arm主板,图像采集卡,poe网卡,朗锐智科 | 手术室净化厂家_成都实验室装修公司_无尘车间施工单位_洁净室工程建设团队-四川华锐16年行业经验 | 中山市派格家具有限公司【官网】| 密集架|电动密集架|移动密集架|黑龙江档案密集架-大量现货厂家销售 | 自动焊锡机_点胶机_螺丝机-锐驰机器人 | 无压烧结银_有压烧结银_导电银胶_导电油墨_导电胶-善仁(浙江)新材料 | 流量检测仪-气密性检测装置-密封性试验仪-东莞市奥图自动化科技有限公司 | 水厂污泥地磅|污泥处理地磅厂家|地磅无人值守称重系统升级改造|地磅自动称重系统维修-河南成辉电子科技有限公司 | 视觉检测设备_自动化检测设备_CCD视觉检测机_外观缺陷检测-瑞智光电 | 智能汉显全自动量热仪_微机全自动胶质层指数测定仪-鹤壁市科达仪器仪表有限公司 | 头条搜索极速版下载安装免费新版,头条搜索极速版邀请码怎么填写? - 欧远全 | SDG吸附剂,SDG酸气吸附剂,干式酸性气体吸收剂生产厂家,超过20年生产使用经验。 - 富莱尔环保设备公司(原名天津市武清县环保设备厂) | uv固化机-丝印uv机-工业烤箱-五金蚀刻机-分拣输送机 - 保定市丰辉机械设备制造有限公司 | 篮球地板厂家_舞台木地板品牌_体育运动地板厂家_凯洁地板 | 真空搅拌机-行星搅拌机-双行星动力混合机-广州市番禺区源创化工设备厂 | 石牌坊价格石牌坊雕刻制作_石雕牌坊牌楼石栏杆厂家_山东嘉祥石雕有限公司 | 3A别墅漆/3A环保漆_广东美涂士建材股份有限公司【官网】 | 浙江华锤电器有限公司_地磅称重设备_防作弊地磅_浙江地磅售后维修_无人值守扫码过磅系统_浙江源头地磅厂家_浙江工厂直营地磅 | 青岛美佳乐清洁工程有限公司|青岛油烟管道清洗|酒店|企事业单位|学校工厂厨房|青岛油烟管道清洗 插针变压器-家用电器变压器-工业空调变压器-CD型电抗器-余姚市中驰电器有限公司 | 锻造液压机,粉末冶金,拉伸,坩埚成型液压机定制生产厂家-山东威力重工官方网站 |