当前位置: 首页 > article >正文

关联查询,左连接,inner join笔记,BNL,NLJ

文章目录left join的最大值和最小值3个表的inner join关联查询时的is_del处理cross join(full join)NLJ 性能高BNL 性能低blj会导致什么问题?left join的最大值和最小值假设左表m条右表n条最小值是m 当一条也匹配不到右表时或者右表中没有多条匹配左表时最大值是mn-1 当左表的一条匹配到右表所有时所以范围是 m 到 mn-13个表的inner join直接inner join结果容易不正确。要先inner join一个拿结果再和第三个表inner join关联查询时的is_del处理一般来说是不用改的如果关联表无数据条件自然不生效。 但是有种特列is_del0。 解决方案1、AND(user.is_del0ORuser.idISnull)2、这个条件加到关联的条件里面?# 好像也不是很好。cross join(full join)连接有几种方式共6种。cross join这种不太常见但是也有用。例如部门用户 测试表。缺点是乘积的关系数据量非常大两张1万的表就能产生1亿的数据。NLJ 性能高NLJ(Nested-Loop Join)(嵌套循环连接)这是MySQL中最理想、也是最高效的连接方式通常发生在被驱动表的关联字段有索引的情况下。工作原理MySQL会先读取驱动表通常是小表的一行数据然后拿着这行数据的关联字段去被驱动表大表里通过索引快速查找匹配的行。匹配成功后就返回结果接着再去取驱动表的下一行循环往复。打个比方就像你在Excel里用VLOOKUP函数。拿着A表的一个名字去B表里瞬间定位并查出对应的电话查完一个再查下一个。性能表现因为走了索引查询速度非常快。如果看到执行计划EXPLAIN里被驱动表的type是ref或eq_ref就说明用到了NLJ。BNL 性能低BNL(Block Nested-Loop Join)(块嵌套循环连接)当被驱动表的关联字段没有索引时MySQL就会退而求其次使用BNL算法。工作原理MySQL不会傻乎乎地逐行去全表扫描被驱动表。它会先把驱动表的一批数据比如100行读取到内存中的一块缓存区叫做JoinBuffer里。然后去全表扫描被驱动表把被驱动表的每一行拿出来和内存缓存区里的这100行数据做批量匹配。打个比方就像考试时的“开卷查找”。你把要查的10个知识点驱动表数据抄在一张小纸条上JoinBuffer然后翻开课本被驱动表从头到尾看每看到一行就赶紧和纸条上的10个知识点对比一遍。这样只用翻一遍课本就能完成10个知识点的查找。性能表现虽然比完全没有优化的全表扫描要好但因为它本质上还是要扫描被驱动表的全表并且极其消耗CPU在内存中进行大量的比对计算所以性能远不如NLJ。在EXPLAIN的Extra列中通常会看到Usingjoinbuffer(BlockNestedLoop)的提示。版本补充HashJoin值得一提的是在MySQL8.0.18及以后的版本中如果遇到大表关联且没有索引的情况MySQL已经不再使用BNL而是引入了更高效的HashJoin哈希连接算法来替代它进一步提升了无索引关联查询的性能。blj会导致什么问题?有一道常见的面试题左表几千条、右表几万条查询的速度居然达到了分钟级按道理说这点数据库量应该很快就能查出。后来找到了问题右表关联字段无索引所以做的bnl就非常慢了。因为相当于不但全表扫描而且全表扫描了很多次。解决方案右表关联字段加索引问题解决。

相关文章:

关联查询,左连接,inner join笔记,BNL,NLJ

文章目录left join的最大值和最小值3个表的inner join关联查询时的is_del处理cross join(full join)NLJ 性能高BNL 性能低blj会导致什么问题?left join的最大值和最小值 假设左表m条,右表n条 最小值是m: 当一条也匹配不到右表时,或者右表中…...

从过采样到Σ-Δ调制:采样技术如何成为提升信噪比的秘密武器

1. 项目概述:从“听不清”到“听得清”的底层博弈 在信号处理、音频工程、通信系统乃至生物医学检测的日常工作中,我们总会遇到一个共同的“敌人”——噪声。无论你是在调试一段录音,分析一组传感器数据,还是试图从遥远的深空接收…...

C++ `reinterpret_cast`

1. C 类型转换基础 C中的四种类型转换:static_cast, dynamic_cast, const_cast, reinterpret_castreinterpret_cast 的定义与目的 2. 使用 reinterpret_cast 语法与基本示例适用场景与不适用的场景 3. 转换指针类型 从void* 到其他类型指针将一个指针类型转换为另一…...

Hitboxer SOCD Cleaner:键盘输入仲裁系统的底层实现与技术架构分析

Hitboxer SOCD Cleaner:键盘输入仲裁系统的底层实现与技术架构分析 【免费下载链接】socd Key remapper for epic gamers 项目地址: https://gitcode.com/gh_mirrors/so/socd 在竞技游戏领域,键盘输入精度直接影响玩家操作表现。传统键盘在处理同…...

C++ `const_cast`

1. C 类型转换基础 C为何需要类型转换C风格类型转换与C风格类型转换类型转换的种类:static_cast, dynamic_cast, const_cast, reinterpret_cast 2. const 限定符基础 为何需要 const 限定符const 的位置和含义 对象为 const指针为 const指针指向的内容为 const3. co…...

C++ `dynamic_cast

1. 基础 C类型转换概览为什么需要dynamic_cast 2. dynamic_cast 的使用 基本语法与其他类型转换(如 static_cast、reinterpret_cast 和 const_cast)的对比 3. RTTI (运行时类型信息) 什么是RTTI如何在C中启用和禁用RTTI 4. dynamic_cast 与多态 使用dyna…...

暗黑破坏神2存档编辑器终极指南:5分钟掌握Diablo Edit2核心功能

暗黑破坏神2存档编辑器终极指南:5分钟掌握Diablo Edit2核心功能 【免费下载链接】diablo_edit Diablo II Character editor. 项目地址: https://gitcode.com/gh_mirrors/di/diablo_edit 你是否曾经因为暗黑破坏神2中角色技能点分配失误而苦恼?是否…...

Moonlight安卓端自定义虚拟按键完全指南:从导入到高级配置

Moonlight安卓端自定义虚拟按键完全指南:从导入到高级配置 【免费下载链接】moonlight-android Moonlight安卓端 阿西西修改版 项目地址: https://gitcode.com/gh_mirrors/moo/moonlight-android 想要在手机或平板上畅玩PC游戏?🎮 Moo…...

3分钟上手XXMI启动器:一站式二次元游戏模组管理平台

3分钟上手XXMI启动器:一站式二次元游戏模组管理平台 【免费下载链接】XXMI-Launcher Modding platform for GI, HSR, WW and ZZZ 项目地址: https://gitcode.com/gh_mirrors/xx/XXMI-Launcher 你是否曾为管理不同游戏的模组而感到头疼?每个游戏都…...

罗技鼠标宏:绝地求生后坐力控制全攻略

罗技鼠标宏:绝地求生后坐力控制全攻略 【免费下载链接】logitech-pubg PUBG no recoil script for Logitech gaming mouse / 绝地求生 罗技 鼠标宏 项目地址: https://gitcode.com/gh_mirrors/lo/logitech-pubg 想要在《绝地求生》中实现精准压枪&#xff0c…...

FFXVIFix终极指南:解锁《最终幻想16》的完美游戏体验

FFXVIFix终极指南:解锁《最终幻想16》的完美游戏体验 【免费下载链接】FFXVIFix Migrated to https://codeberg.org/Lyall/FFXVIFix 项目地址: https://gitcode.com/gh_mirrors/ff/FFXVIFix FFXVIFix是一款专门为《最终幻想16》设计的全方位优化工具&#xf…...

macOS完整安装器下载工具终极指南:轻松获取Big Sur系统安装包

macOS完整安装器下载工具终极指南:轻松获取Big Sur系统安装包 【免费下载链接】DownloadFullInstaller macOS application written in SwiftUI that downloads installer pkgs for the Install macOS Big Sur application. 项目地址: https://gitcode.com/gh_mirr…...

如何一键下载30+主流文档平台内容?kill-doc开源工具全解析

如何一键下载30主流文档平台内容?kill-doc开源工具全解析 【免费下载链接】kill-doc 看到经常有小伙伴们需要下载一些免费文档,但是相关网站浏览体验不好各种广告,各种登录验证,需要很多步骤才能下载文档,该脚本就是为…...

DownKyi终极教程:3步掌握B站视频下载,免费打造个人媒体库

DownKyi终极教程:3步掌握B站视频下载,免费打造个人媒体库 【免费下载链接】downkyi 哔哩下载姬downkyi,哔哩哔哩网站视频下载工具,支持批量下载,支持8K、HDR、杜比视界,提供工具箱(音视频提取、…...

Real-ESRGAN终极指南:让模糊图像瞬间清晰的AI魔法

Real-ESRGAN终极指南:让模糊图像瞬间清晰的AI魔法 【免费下载链接】Real-ESRGAN Real-ESRGAN aims at developing Practical Algorithms for General Image/Video Restoration. 项目地址: https://gitcode.com/gh_mirrors/re/Real-ESRGAN 你是否曾经为那些模…...

为什么mob成为远程团队编程的首选工具?深度解析

为什么mob成为远程团队编程的首选工具?深度解析 【免费下载链接】mob Tool for smooth git handover. 项目地址: https://gitcode.com/gh_mirrors/mo/mob 在当今远程协作成为常态的时代,高效的团队编程工具变得至关重要。mob作为一款专为平滑Git交…...

QueryExcel:高效批量Excel数据查询的终极开源解决方案

QueryExcel:高效批量Excel数据查询的终极开源解决方案 【免费下载链接】QueryExcel 多Excel文件内容查询工具。 项目地址: https://gitcode.com/gh_mirrors/qu/QueryExcel 面对海量Excel文件中的数据查询需求,你是否还在重复着CtrlF、CtrlC、Ctrl…...

如何构建专业级电子签名:现代前端解决方案指南

如何构建专业级电子签名:现代前端解决方案指南 【免费下载链接】smooth-signature H5带笔锋手写签名,支持PC端和移动端,任何前端框架均可使用 项目地址: https://gitcode.com/gh_mirrors/smo/smooth-signature 在数字化办公时代&#…...

OV5640摄像头数据流抓取与仿真全攻略:从DVP时序到Testbench调试技巧

OV5640摄像头数据流抓取与仿真全攻略:从DVP时序到Testbench调试技巧 在FPGA图像处理系统中,OV5640作为一款高性价比的500万像素CMOS传感器,其DVP接口的数据采集可靠性直接影响整个系统的图像质量。本文将深入探讨如何构建稳健的数据捕获逻辑&…...

GRBL-Plotter完全指南:从创意到实物的智能数控转换方案

GRBL-Plotter完全指南:从创意到实物的智能数控转换方案 【免费下载链接】GRBL-Plotter A GCode sender (not only for lasers or plotters) for up to two GRBL controller. SVG, DXF, HPGL import. 6 axis DRO. 项目地址: https://gitcode.com/gh_mirrors/gr/GR…...

STM32G474的HRTIM驱动DAC:你的锯齿波‘毛刺’和失真,可能是这两个寄存器配置反了

STM32G474的HRTIM驱动DAC:锯齿波失真问题深度解析与优化方案 在精密模拟电路设计中,STM32G474系列微控制器凭借其高性能HRTIM(高分辨率定时器)和DAC(数模转换器)的组合,成为生成高精度波形的重要…...

mpv.net 高效配置实战:从媒体播放到专业调优的进阶指南

mpv.net 高效配置实战:从媒体播放到专业调优的进阶指南 【免费下载链接】mpv.net 🎞 mpv.net is a media player for Windows with a modern GUI. 项目地址: https://gitcode.com/gh_mirrors/mp/mpv.net 作为一款基于mpv核心的现代化Windows媒体播…...

终极指南:如何在Android设备上离线使用Zwift骑行模拟平台

终极指南:如何在Android设备上离线使用Zwift骑行模拟平台 【免费下载链接】zwift-offline Use Zwift offline 项目地址: https://gitcode.com/gh_mirrors/zw/zwift-offline 你是否曾梦想在无需网络连接的情况下享受专业的Zwift虚拟骑行体验?现在&…...

OpenAI 模型攻克离散几何 80 年难题:Erdős 单位距离猜想被 AI 证明

OpenAI 模型攻克离散几何 80 年难题:Erdős 单位距离猜想被 AI 证明 一场改写数学史的AI突破 2026年5月20日,OpenAI 宣布其内部通用推理模型成功证明了一个困扰数学界近80年的开放问题——Erdős 单位距离问题(Unit Distance Problem&#…...

如何用btcrecover快速找回丢失的比特币钱包密码与助记词:完整指南

如何用btcrecover快速找回丢失的比特币钱包密码与助记词:完整指南 【免费下载链接】btcrecover An open source Bitcoin wallet password and seed recovery tool designed for the case where you already know most of your password/seed, but need assistance i…...

解锁SD-PPP:将AI绘画能力无缝融入Photoshop工作流

解锁SD-PPP:将AI绘画能力无缝融入Photoshop工作流 【免费下载链接】sd-ppp A Photoshop AI plugin 项目地址: https://gitcode.com/gh_mirrors/sd/sd-ppp 你是否曾经在Photoshop中创作时,突然需要一个AI生成的元素来完善设计,却不得不…...

3分钟搞定B站评论分析:这个开源工具让你秒懂评论区用户身份

3分钟搞定B站评论分析:这个开源工具让你秒懂评论区用户身份 【免费下载链接】bilibili-comment-checker B站评论区自动标注成分,支持动态和关注识别以及手动输入 UID 识别 项目地址: https://gitcode.com/gh_mirrors/bil/bilibili-comment-checker …...

2026局放仪选型与避坑:谁家局放仪更具性价比?

在高压配电网与智能电网的运维体系中,局部放电(Partial Discharge, PD)检测已成为保障电力资产安全、避免非计划停电的关键环节。根据《高压开关柜局部放电诊断定位技术研究与运用》的统计数据,在开关柜的各类故障中,绝…...

AI系统的四层缓存架构

别再被“提示词缓存”“语义缓存”绕晕了,它们根本不是一回事 先上关系图:AI系统里的四层缓存 很多人把缓存当一个东西聊,其实它们是四个不同的层,各管各的,又互相喂数据。 第一层 长期知识源 项目记忆缓存&#x…...

AssetRipper:3步解锁Unity游戏资源逆向提取的终极免费方案

AssetRipper:3步解锁Unity游戏资源逆向提取的终极免费方案 【免费下载链接】AssetRipper GUI Application to work with engine assets, asset bundles, and serialized files 项目地址: https://gitcode.com/GitHub_Trending/as/AssetRipper 在Unity游戏开发…...