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

MySQL | MySQL 为什么不推荐使用JOIN

MySQL 为什么不推荐使用JOIN

MySQL 不推荐使用 JOIN 的说法是过于简化的。实际上,在某些情况下使用 JOIN 是非常有用的,但在其他情况下可能会带来性能问题、复杂性和可维护性问题以及重复数据等问题。

首先我们需要知道JOIN语句是用于将多个表中的数据进行联合起来的操作。

JOIN 本质就是各个表直接数据循环匹配,嵌套查询。也就是从主表(驱动表)中取出一条数据,遍历从表(被驱动表),将匹配到的数据放到result。以次类推,主表中的每一条记录与从表记录进行判断。

  • 在关联查询的时候,那个表作为主表(驱动表),那个表作为从表(被驱动表),不是那个表在前边那个表就是主表,而是MySQL优化器决定谁是主表(除了STRAIGHT_JOIN),谁是从表,优化器会通过很多方面来决定例如索引
  • straight_join 是内连接查询 是那个表在前边 那个表就是主表,。使用straight_join一定要慎重,因为部分情况下人为指定的执行顺序并不一定会比优化引擎要靠谱。
比如A表 inner join B表查询 create table a(f1 int,f2 int ,INDEX(f1));
create table b(f1 int,f2 int,index(f2));内连接
EXPLAIN select * from a inner join b on a.f1=b.f1;#b作为主表
EXPLAIN select * from a inner join b on a.f1=b.f1 where a.f1 = 1;#a作为主表
EXPLAIN select * from a inner join b on a.f1=b.f1 where b.f2 = 1;#b作为主表

在小数据量的情况下可以使用JOIN 联合查询,一旦数据量很大效率就很难保证了。

分布式的分库分表。这种时候是不建议跨库join的。目前mysql的分布式中间件,跨库join表现不良。

数据库是最底层的,瓶颈往往是数据库。建议数据库只是作为数据store(存储)的工具,而不要添加业务上去

MySQL 为什么不推荐子查询

MySQL子查询,效率太差,执行子查询时,MYSQL需要创建临时表,查询完毕后再删除这些临时表,所以,子查询的速度会受到一定的影响,这里多了一个创建和销毁临时表的过程。

相关文章:

MySQL | MySQL 为什么不推荐使用JOIN

MySQL 为什么不推荐使用JOIN MySQL 不推荐使用 JOIN 的说法是过于简化的。实际上,在某些情况下使用 JOIN 是非常有用的,但在其他情况下可能会带来性能问题、复杂性和可维护性问题以及重复数据等问题。 首先我们需要知道JOIN语句是用于将多个表中的数据…...

[LeetCode] 1.两数之和

一、题目描述 给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值 target的那两个整数,并返回他们的数组下标。 你可以假设每种输入只会对应一个答案。但是,数组中同一个元素不能使用两遍。 你可以按任意顺序返回答…...

ruby语言怎么写个通用爬虫程序?

Ruby语言爬虫是指使用Ruby编写的网络爬虫程序,用于自动化地从互联网上获取数据。其中,CRawler是一个基于文本的小型地牢爬虫,它被设计为可扩展,所有游戏数据均通过JSON文件提供,程序仅处理游戏引擎。除此之外&#xff…...

7 交换机与VLAN

1、拓扑结构是怎么形成的? 举例:办公楼里的每一个楼层可能会有几百台机器,显然需要N个交换机。 交换机之间连接起来,就形成一个稍微复杂的拓扑结构2、两台交换机的情形 1.两台交换机连接着三个局域网,每个局域网上都…...

C++指针笔记

一.定义 是什么? 指针就是地址,相当于门牌号。通过 0x0000也可以拿到该地址里的数据, 可是如果每创建一个变量都要去记住地址编号不太方便我们使用数据,所以才有变量。作用? 通过指针(地址)间接访问内存。内存的编号…...

vue中app.use()做了什么

为什么要app.use(参数) 注册组件,且注册的组件全局可用,或在vue原型上添加内容。 use参数需要什么类型的?vue规定:参数要么是对象形式,且必须有install这个方法属性,或者参数为函数。 另外:注…...

【网安AIGC专题11.1】论文12:理解和解释代码,GPT-3大型语言模型学生创建的代码解释比较+错误代码的解释(是否可以发现并改正)

Comparing Code Explanations Created by Students and Large Language Models 写在最前面总结思考 背景介绍编程教育—代码理解和解释技能培养编程教育—解决方案研究问题研究结果 相关工作Code ComprehensionPedagogical Benifis of code explanationLarge Language Models i…...

【GEE】4、 Google 地球引擎中的数据导入和导出

1简介 在本模块中,我们将讨论以下概念: 如何将您自己的数据集引入 GEE。如何将来自遥感数据的值与您自己的数据相关联。如何从 GEE 导出特征。 2背景 了解动物对环境的反应对于了解如何管理这些物种至关重要。虽然动物被迫做出选择以满足其基本需求&am…...

【C++】特殊类设计+类型转换+IO流

🌇个人主页:平凡的小苏 📚学习格言:命运给你一个低的起点,是想看你精彩的翻盘,而不是让你自甘堕落,脚下的路虽然难走,但我还能走,比起向阳而生,我更想尝试逆风…...

JAVA整理学习实例(一)面向对象

JAVA整理学习实例(一)面向对象 注:整理一下之前写的东西,然后在修修补补,水平有限,有错误的请指正。 前言 基础部分的面试大部份是理论和一些语法细节,如果平时没有关注,在面试或者做…...

QT 实现解密m3u8文件

文章目录 概要如何解密M3U8文件呢实现思路和代码序列图网络请求解密 结论 概要 视频文件很多已M3U8文件格式来提供,先复习下什么是M3U8文件!用QT的 mutimedia框架来播放视频时,有的视频加载慢,有的视频加载快,为啥&am…...

论文阅读—— BiFormer(cvpr2023)

论文:https://arxiv.org/abs/2303.08810 github:GitHub - rayleizhu/BiFormer: [CVPR 2023] Official code release of our paper "BiFormer: Vision Transformer with Bi-Level Routing Attention" 一、介绍 1、要解决的问题:t…...

理解 fopen的 rwa r+w+a+ 参数含义

tags: C categories: C 理解 一图胜千言 我愿称之为最强 c - Difference between r and w in fopen() - Stack Overflow; 需要注意里面的a和 a, 区别在于 a 不可以读而 a可以读. c - Difference between r and w in fopen() - Stack Overflow; ModeReadWriteCreate New Fil…...

【强化学习】17 ——DDPG(Deep Deterministic Policy Gradient)

文章目录 前言DDPG特点 随机策略与确定性策略DDPG:深度确定性策略梯度伪代码代码实践 前言 之前的章节介绍了基于策略梯度的算法 REINFORCE、Actor-Critic 以及两个改进算法——TRPO 和 PPO。这类算法有一个共同的特点:它们都是在线策略算法&#xff0c…...

驱动开发11-2 编写SPI驱动程序-点亮数码管

驱动程序 #include <linux/init.h> #include <linux/module.h> #include <linux/spi/spi.h>int m74hc595_probe(struct spi_device *spi) {printk("%s:%d\n",__FILE__,__LINE__);char buf[]{0XF,0X6D};spi_write(spi,buf,sizeof(buf));return 0; …...

Java使用pdfbox进行pdf和图片之间的转换

简介 pdfbox是Apache开源的一个项目,支持pdf文档操作功能。 官网地址: Apache PDFBox | A Java PDF Library 支持的功能如下图.引入依赖 <dependency><groupId>org.apache.pdfbox</groupId><artifactId>pdfbox-app</artifactId><version>…...

机器学习中的关键组件

机器学习中的关键组件 数据 每个数据集由一个个样本组成&#xff0c;大多时候&#xff0c;它们遵循独立同分布。样本有时也叫作数据点或数据实例&#xff0c;通常每个样本由一组称为特征或协变量的属性组成。机器学习会根据这些属性进行预测&#xff0c;预测得到的称为标签或…...

【JVM】JDBC案例打破双亲委派机制

&#x1f40c;个人主页&#xff1a; &#x1f40c; 叶落闲庭 &#x1f4a8;我的专栏&#xff1a;&#x1f4a8; c语言 数据结构 javaEE 操作系统 Redis 石可破也&#xff0c;而不可夺坚&#xff1b;丹可磨也&#xff0c;而不可夺赤。 JVM 打破双亲委派机制&#xff08;JDBC案例…...

每天五分钟计算机视觉:池化层的反向传播

本文重点 卷积神经网络(Convolutional Neural Network,CNN)作为一种强大的深度学习模型,在计算机视觉任务中取得了巨大成功。其中,池化层(Pooling Layer)在卷积层之后起到了信息压缩和特征提取的作用。然而,池化层的反向传播一直以来都是一个相对复杂和深奥的问题。本…...

Docker的安装、基础命令与项目部署

文章目录 前言一、docker安装与MySQL部署1.Linux环境下docker的安装&#xff08;1&#xff09;基于CentOS7&#xff08;2&#xff09;基于Ubuntu 二、docker基础1.常见命令&#xff08;1&#xff09;快速创建一个mysql容器&#xff08;MySQL得一键安装&#xff09;。&#xff0…...

RTV主题开发终极指南:如何从零开始创建自定义终端Reddit主题

RTV主题开发终极指南&#xff1a;如何从零开始创建自定义终端Reddit主题 【免费下载链接】rtv Browse Reddit from your terminal 项目地址: https://gitcode.com/gh_mirrors/rt/rtv RTV&#xff08;Reddit Terminal Viewer&#xff09;是一个强大的终端Reddit浏览工具&…...

OpenClaw会议小秘书:Qwen3.5-9B自动生成待办事项

OpenClaw会议小秘书&#xff1a;Qwen3.5-9B自动生成待办事项 1. 为什么需要会议自动化助手 每周三下午的组会结束后&#xff0c;我的记事本上总是密密麻麻写满了待办事项。但问题在于——这些潦草的手写笔记有30%的概率会丢失&#xff0c;50%的概率会忘记执行截止时间。直到上…...

如何高效使用付费墙绕过工具:Chrome扩展的完整实践指南

如何高效使用付费墙绕过工具&#xff1a;Chrome扩展的完整实践指南 【免费下载链接】bypass-paywalls-chrome-clean 项目地址: https://gitcode.com/GitHub_Trending/by/bypass-paywalls-chrome-clean 在信息获取日益重要的今天&#xff0c;付费墙成为许多用户访问优质…...

空洞骑士模组管理新体验:Scarab让模组安装变得简单高效

空洞骑士模组管理新体验&#xff1a;Scarab让模组安装变得简单高效 【免费下载链接】Scarab An installer for Hollow Knight mods written in Avalonia. 项目地址: https://gitcode.com/gh_mirrors/sc/Scarab 你是否曾经因为空洞骑士模组安装的复杂性而感到困扰&#x…...

Eclipse 添加书签的详细指南

Eclipse 添加书签的详细指南 引言 Eclipse 作为一款功能强大的集成开发环境(IDE),被广泛应用于Java编程和软件开发领域。书签功能是Eclipse提供的一个便捷的工具,可以帮助开发者快速定位到代码中的特定位置。本文将详细介绍如何在Eclipse中添加书签,以及如何管理和使用这…...

网络SEO优化与移动端优化的关系是什么

网络SEO优化与移动端优化的关系&#xff1a;为什么两者不可分割 在当前互联网时代&#xff0c;网络SEO优化与移动端优化的关系越来越受到企业和营销人员的关注。随着移动互联网的普及&#xff0c;越来越多的用户通过手机浏览器进行网络搜索和浏览。因此&#xff0c;如何在网络…...

[具身智能-236]:OpenCV ROI:Region of Interest(感兴趣区域)

在 OpenCV 中&#xff0c;ROI 是 Region of Interest&#xff08;感兴趣区域&#xff09;的缩写。简单来说&#xff0c;ROI 就是从图像中切出来的“一块”。在处理图像时&#xff0c;我们往往不需要处理整张图片&#xff08;比如处理人脸时不需要管背景里的树&#xff09;&…...

EduCoder实训答案查询站是怎么建起来的?从签到、解锁到数据抓取的全流程复盘

从零构建EduCoder答案查询站的技术实践与思考 去年冬天&#xff0c;我发现身边不少同学在EduCoder平台上刷实训时常常卡壳&#xff0c;而平台自带的答案解锁机制又需要消耗大量金币。作为一名计算机专业的学生兼业余开发者&#xff0c;我萌生了一个想法&#xff1a;能否通过技术…...

MATLAB代码:基于主从博弈的电热综合能源系统DE算法优化动态定价与能量管理

MATLAB代码&#xff1a;基于主从博弈的电热综合能源系统动态定价与能量管理 关键词&#xff1a;主从博弈 电热综合能源 动态定价 能量管理 仿真平台&#xff1a;MATLAB 平台 优势&#xff1a;代码具有一定的深度和创新性&#xff0c;注释清晰&#xff0c;非烂大街的代码&…...

目前遇到问题

手机重启以后&#xff0c;app虽然已经启动了自启动&#xff0c;但是实际并没有启动应该是没有启动监听开机广播...