首页 > 数据库 >mysql——关于join的一些知识

mysql——关于join的一些知识

时间:2023-04-18 14:57:09浏览次数:37  
标签:知识 join 笛卡尔 xxx cross inner mysql select

1、select * from a join b,与select * from a,b

结果是相同的,都是两张表的笛卡尔积

 

2、jion、inner join 和cross join

在inner join 没有加on条件时,join、inner join 和cross join没有区别

xxx join xxx,就等于 xxx inner join xxx,也等于 xxx cross join xxx,得到的结果都是两张表数据量相乘的笛卡尔积。例如a表有10条数据,b表有100条数据,jion之后的结果就是1000条数据。

 

3、加上on条件之后,查询性能更好

inner join on,ON语句的执行是在JOIN语句之前的,也就是说两张表数据行之间进行匹配的时候,会先判断数据行是否符合ON语句后面的条件,再决定是否JOIN

select * from a,b where xxx,会在内存中先生成一张数据量比较大的笛卡尔积表,增加了内存的开销

 

4、提高 inner join查询性能的方式

(1)以小表作为驱动表(inner join前面的为驱动表),大表作为被驱动表;

(2)为大表的条件字段创建索引;

(3)增大join_buffer_size。

 

 参考:https://www.zhihu.com/question/34559578/answer/2287459774

 

参考:https://blog.csdn.net/qq_19800265/article/details/103401272

标签:知识,join,笛卡尔,xxx,cross,inner,mysql,select
From: https://www.cnblogs.com/hushuer/p/17329500.html

相关文章

  • MySQL多源复制报错,在线更改relay_log_info_repository,master_info_repository参数
    MySQL在5.7之后才支持多源复制,之前介绍过官方文档。原理:多源复制加入了一个叫做Channel的概念,每一个Channel都是一个独立的Slave,都有一个IO_THREAD和SQL_THREAD。原理和普通复制一样。我们只需要对每一个Master执行ChangeMaster语句,只需要在每个语句最后使用ForChannel来进行......
  • mysql在线将传统复制模式改为GTID复制模式
    gtid_mode参数各个值的含义:OFF:生成的是匿名事务,从库只能应用匿名事务OFF_PERMISSIVE:生成的是匿名事务,从库可以应用匿名事务和GTID事务ON_PERMISSIVE:生成的是GTID事务,从库可以应用匿名事务和GTID事务ON:生成的是GTID事务,从库只能应用GTID事务一、在线开启GTID,需要满足两个条件......
  • #### Mysql 基础
    MySQL数据库知识基本概念MySQL搭建SQL语句编写约束索引事务锁机制设计数据库表性能优化学习建议其中,SQL语句编写和设计数据库表这两个能力一定要有!比如让你做一个学生管理系统,你要能想到需要哪些表,比如学生表、班级表;每个表需要哪些字段、字......
  • MySQL 执行计划分析
    一、获取方法与阅读顺序1. 获取方法注意这个执行计划只是预估的explainsql语句--或者descsql语句2.阅读顺序id值相同:从上往下顺序执行(下图为tc->c->t)一般越小或者返回值越少的表会越先被执行,这样才能保证后面关联时外层查询结果尽量小,内层查询被循环次数少id值不同:越大......
  • Ubuntu下安装及配置MySQL
    与在centos下安装相比多很多坑,不建议用。 一、软件安装Ubuntu下有两种常用方式apt-get方式(类似于yum)deb包方式安装(类似于rpm包)1.下载并解压软件下载地址:http://dev.mysql.com/downloads/mysql/这个tar包里包含mysql软件所有deb软件包创建安装目录:mkdir/usr/local/mysql将.tar文......
  • Mysql数据库-DQL操作
    DQL是数据查询语言(DataQueryLanguage)的缩写,是一种用于从数据库中检索数据的编程语言。DQL是SQL(结构化查询语言)的子集,用于查询关系型数据库,例如MySQL、Oracle和SQLServer等。DQL提供了多种查询操作,如SELECT、FROM、WHERE、GROUPBY、HAVING、ORDERBY等。使用这些操作,可以根据......
  • MySQL并行导入导出工具——mysqlpump
    一、 mysqlpump简介mysql官方从5.7开始推出了mysqlpump工具,它和mysqldump一样属于逻辑备份。1.优点基于表并行备份数据库和数据库中对象,加快备份过程。(--default-parallelism)更好地控制数据库和数据库对象(表,存储过程,用户帐户)的备份。备份用户账号作为帐户管理语句(CREATEUSER,GRAN......
  • mysql锁及锁出现总结
    转载请注明出处:1.按锁粒度分类:行锁:锁某行数据,锁粒度最小,并发度高;;行锁是指加锁的时候锁住的是表的某一行或多行记录,多个事务访问同一张表时,只有被锁住的记录不能访问,其他的记录可正常访问;行锁是对所有行级别锁的一个统称,比如下面说的记录锁、间隙锁、临键锁都是属于行锁表锁:锁整张......
  • 使用Task的一些知识优化了一下同事的多线程协作取消的一串代码
    最近在看一个同事的代码,代码的本意是在main方法中开启10个线程,用这10个线程来处理一批业务逻辑,在某一时刻当你命令console退出的时候,这个时候不是立即让console退出,而是需要等待10个线程把检测状态之后的业务逻辑执行完之后再退出,这样做是有道理的,如果强......
  • 测试环境治理之MYSQL索引优化篇
    作者:京东物流 李光新1治理背景测试环境这个话题对于开发和测试同学一定不陌生,大家几乎每天都会接触。但是说到对测试环境的印象,却鲜有好评:•环境不稳定,测试五分钟,排查两小时•基础建设不全,导致验证不充分,遗漏缺陷•多人共用,节点堵塞这些问题在行业内其实屡见不鲜,针对测试环境的......