iis服务器助手广告广告
返回顶部
首页 > 资讯 > 数据库 >mysql的join查询和多次查询方法是什么
  • 1262
分享到

mysql的join查询和多次查询方法是什么

mysqljoin 2023-03-09 17:03:53 1262人浏览 泡泡鱼
摘要

这篇文章主要讲解了“Mysql的join查询和多次查询方法是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“mysql的join查询和多次查询方法是什么”

这篇文章主要讲解了“Mysql的join查询和多次查询方法是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“mysql的join查询和多次查询方法是什么”吧!

    join查询和多次查询比较

    MySQL多表关联查询效率高点还是多次单表查询效率高?

    在数据量不够大的时候,用join没有问题,但是一般都会拉到service层上去做

    第一:单机数据库计算资源很贵,数据库同时要服务写和读,都需要消耗CPU,为了能让数据库的吞吐变得更高,而业务又不在乎那几百微妙到毫秒级的延时差距,业务会把更多计算放到service层做,毕竟计算资源很好水平扩展,数据库很难啊,所以大多数业务会把纯计算操作放到service层做,而将数据库当成一种带事务能力的kv系统来使用,这是一种重业务,轻DB的架构思路

    第二:很多复杂的业务可能会由于发展的历史原因,一般不会只用一种数据库,一般会在多个数据库上加一层中间件,多个数据库之间就没办法join了,自然业务会抽象出一个service层,降低对数据库的耦合。

    第三:对于一些大型公司由于数据规模庞大,不得不对数据库进行分库分表,对于分库分表的应用,使用join也受到了很多限制,除非业务能够很好的根据sharding key明确要join的两个表在同一个物理库中。而中间件一般对跨库join都支持不好。

    举一个很常见的业务例子,在分库分表中,要同步更新两个表,这两个表位于不同的物理库中,为了保证数据一致性,一种做法是通过分布式事务中间件将两个更新操作放到一个事务中,但这样的操作一般要加全局,性能很捉急,而有些业务能够容忍短暂的数据不一致,怎么做?让它们分别更新呗,但是会存在数据写失败的问题,那就起个定时任务,扫描下A表有没有失败的行,然后看看B表是不是也没写成功,然后对这两条关联记录做订正,这个时候同样没法用join去实现,只能将数据拉到service层应用自己来合并了。。。

    事实上,用分解关联查询的方式重构查询具有如下优势:

    缓存的效率更高。

    许多应用程序可以方便地缓存单表查询对应的结果对象。另外对于Mysql的查询缓存来说,如果关联中的某个表发生了变化,那么就无法使用查询缓存了,而拆分后,如果某个表很少改变,那么基于该表的查询就可以重复利用查询缓存结果了。

    将查询分解后,执行单个查询可以减少锁的竞争。

    在应用层做关联,可以更容易对数据库进行拆分,更容易做到高性能和可扩展。

    查询本身效率也可能会有所提升

    可以减少冗余记录的查询。

    更进一步,这样做相当于在应用中实现了哈希关联,而不是使用MySQL的嵌套环关联,某些场景哈希关联的效率更高很多。

    查询语句join、on、where执行顺序

    MySQL 的执行顺序

    一、典型SELECT语句完整的执行顺序

    1)from子句组装来自不同数据源的数据;

    2)使用on进行join连接的数据筛选

    3)where子句基于指定的条件对记录行进行筛选;

    4)group by子句将数据划分为多个分组;

    5)cube, rollup

    6)使用聚集函数进行计算;

    7)使用having子句筛选分组;

    8)计算所有的表达式;

    9)计算select的字段;

    10)使用distinct 进行数据去重

    11)使用order by对结果集进行排序

    12)选择TOPN的数据

    二、from

    如果是采用的 关联 from tableA, tableB ,这2个表会先组织进行笛卡尔积,然后在进行下面的 where、group by 等操作。

    三、on

    如果使用left join, inner join 或者 outer full join的时候,使用on 进行条件筛选后,在进行join。

    看下面的2个sql 和结果。2者的区别仅仅是在on后面的一个语句在on和where位置的不同。 由此可以看出是先通过on 进行条件筛选,然后在join,最后在进行where条件筛选。

    假如:是先进行join,在进行on的话,会产生一个笛卡尔积,然后在筛选。这样的left join 和 直连接 没有任何的区别。 所以肯定是先on 条件筛选后,在进行join。

    假如:是在进行where 后,在on,在进行join, 下面2个sql的返回结果应该是一样的。由此可以见,where是针对 join 后的集合进行的筛选。

    综上: 先 执行on 条件筛选, 在进行join, 最后进行where 筛选

    SELECT DISTINCT a.domain , b.domain
    FROM mal_nxdomains_raw a
    LEFT JOIN mal_nxdomains_detail b ON a.domain = b.domain AND b.date = ‘20160403'
    WHERE a.date = ‘20160403'

    mysql的join查询和多次查询方法是什么

    SELECT DISTINCT a.domain , b.domain
    FROM mal_nxdomains_raw a
    LEFT JOIN mal_nxdomains_detail b ON a.domain = b.domain #and b.date = ‘20160403'
    WHERE a.date = ‘20160403'
    AND b.date = ‘20160403'

    mysql的join查询和多次查询方法是什么

    四、on 条件与where 条件

    1、使用位置

    • on 条件位置在join后面

    • where 条件在join 与on完成的后面

    2、使用对象

    • on 的使用对象是被关联表

    • where的使用对象可以是主表,也可以是关联表

    3、选择与使用

    主表条件筛选:只能在where后面使用。

    被关联表,如果是想缩小join范围,可以放置到on后面。如果是关联后再查询,可以放置到where 后面。

    如果left join 中,where条件有对被关联表的 关联字段的 非空查询,与使用inner join的效果后,在进行where 筛选的效果是一样的。不能起到left join的作用。

    五、join 流程

    tableA join tableB, 从A表中拿出一条数据,到B表中进行扫描匹配。所以A的行数决定查询次数,B表的行数决定扫描范围。例如A表100条,B表200表,需要100次从A表中取出一条数据到B表中进行200次的比对。

    相对来说从A表取数据消耗的资源比较多。所以尽量tableA选择比较小的表。同时缩小B表的查询范围。

    但是实际应用中,因为二者返回的数据结果不同,使用的索引也不同,导致条件放置在on 和 where 效率是不一定谁更好。要根据需求来确定。

    感谢各位的阅读,以上就是“mysql的join查询和多次查询方法是什么”的内容了,经过本文的学习后,相信大家对mysql的join查询和多次查询方法是什么这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是编程网,小编将为大家推送更多相关知识点的文章,欢迎关注!

    您可能感兴趣的文档:

    --结束END--

    本文标题: mysql的join查询和多次查询方法是什么

    本文链接: https://www.lsjlt.com/news/199061.html(转载时请注明来源链接)

    有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

    本篇文章演示代码以及资料文档资料下载

    下载Word文档到电脑,方便收藏和打印~

    下载Word文档
    猜你喜欢
    • mysql的join查询和多次查询方法是什么
      这篇文章主要讲解了“mysql的join查询和多次查询方法是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“mysql的join查询和多次查询方法是什么”...
      99+
      2023-03-09
      mysql join
    • mysql的join查询和多次查询方式比较
      目录join查询和多次查询比较查询语句join、on、where执行顺序一、典型SELECT语句完整的执行顺序二、from三、on四、on 条件与where 条件五、join 流程总结join...
      99+
      2023-03-09
      mysql查询 mysqljoin查询 mysql多次查询
    • MySQL多表查询的方法是什么
      这篇“MySQL多表查询的方法是什么”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“MySQL多表查询的方法是什么”文章吧。多...
      99+
      2023-07-04
    • Mysql连接join查询的原理是什么
      Mysql连接join查询的原理是什么,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。Mysql连接(join)查询1、基本概念将两个表的每...
      99+
      2022-10-18
    • Mysql 多表连接查询 inner join 和 outer join 的使用
        首先先列举本篇用到的分类(内连接,外连接,交叉连接)和连接方法(如下): A)内连接:join,inner join B)外连接:left join,left outer join,right join,right out...
      99+
      2014-07-14
      Mysql 多表连接查询 inner join outer join 的使用
    • MySQL连接查询的方法是什么
      这篇文章主要介绍“MySQL连接查询的方法是什么”,在日常操作中,相信很多人在MySQL连接查询的方法是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”MySQL连接查询的...
      99+
      2022-10-19
    • 什么是MySQL通用查询和慢查询日志
      下面讲讲关于什么是MySQL通用查询和慢查询日志,文字的奥妙在于贴近主题相关。所以,闲话就不谈了,我们直接看下文吧,相信看完什么是MySQL通用查询和慢查询日志这篇文章你一定会有所受益。MySQL中的日志包...
      99+
      2022-10-18
    • MySQL内连接查询的方法是什么
      本篇内容介绍了“MySQL内连接查询的方法是什么”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!内连接也叫连接,是最早的一种连接。还可以被称为...
      99+
      2023-06-27
    • mysql慢查询优化的方法是什么
      MySQL慢查询优化的方法有以下几种:1. 使用索引:索引可以大大提高查询的速度。需要根据查询语句的特点选择合适的列进行索引,避免全...
      99+
      2023-08-31
      mysql
    • mysql的多表查询实现方法
      本篇文章给大家分享的是有关mysql的多表查询实现方法,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。多表查询有3种方式,分别是:1、传统方式,...
      99+
      2022-10-18
    • mysql多表联合的查询方法
      本文主要给大家介绍mysql多表联合的查询方法,文章内容都是笔者用心摘选和编辑的,具有一定的针对性,对大家的参考意义还是比较大的,下面跟笔者一起了解下mysql多表联合的查询方法吧。   ...
      99+
      2022-10-18
    • MySQL进行多表查询的方法
      这篇文章主要介绍了MySQL进行多表查询的方法,具有一定借鉴价值,需要的朋友可以参考下。希望大家阅读完这篇文章后大有收获。下面让小编带着大家一起了解一下。一、使用SELECT子句进行多表查询SELE...
      99+
      2022-10-18
    • MySQL的连接方式和多表查询方法
      本篇内容主要讲解“MySQL的连接方式和多表查询方法”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“MySQL的连接方式和多表查询方法”吧!目录MySQL 内连接、左连接、右连接、外连接、多表查询...
      99+
      2023-06-20
    • 提升MySQL查询效率及查询速度优化的方法是什么
      今天小编给大家分享一下提升MySQL查询效率及查询速度优化的方法是什么的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,...
      99+
      2023-05-12
      mysql
    • MySQL中流式查询及游标查询的方式是什么
      这篇文章主要讲解了“MySQL中流式查询及游标查询的方式是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“MySQL中流式查询及游标查询的方式是什么”吧!...
      99+
      2022-10-19
    • mongodb多表连接查询的方法是什么
      在MongoDB中,没有直接的多表连接查询方法,因为MongoDB是一个非关系型数据库,不支持传统的关系型数据库的表连接操作。但是可...
      99+
      2023-09-12
      mongodb
    • mysql分页查询优化的方法是什么
      MySQL分页查询的优化方法包括:1. 使用索引:在进行分页查询时,使用合适的索引可以大大提高查询性能。可以创建适当的索引,以确保查...
      99+
      2023-10-08
      mysql
    • MySQL三表联合查询的方法是什么
      这篇文章主要介绍了MySQL三表联合查询的方法是什么的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇MySQL三表联合查询的方法是什么文章都会有所收获,下面我们一起来看看吧。一、题目概述给定三张表(学生表、科目表...
      99+
      2023-07-05
    • MySQL的慢查询是什么
      这篇文章主要讲解了“MySQL的慢查询是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“MySQL的慢查询是什么”吧!MySQL慢查询分析 在我...
      99+
      2022-10-18
    • mysql回表查询是什么,回表查询的使用
      目录聚集索引和非聚集索引聚集索引和非聚集索引的区别那回表是什么验证在说到什么是回表查询的时候,有两个概念需要先解释清楚:分别是聚集索引(聚簇索引)和非聚集索引(非聚簇索引) 聚集索引和非聚集索引 mysql规定,在使用I...
      99+
      2022-11-21
      mysql查询 mysql回表查询 回表查询
    软考高级职称资格查询
    编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
    • 官方手机版

    • 微信公众号

    • 商务合作