广告
返回顶部
首页 > 资讯 > 数据库 >MySql数据库单表查询与多表连接查询效率对比
  • 312
分享到

MySql数据库单表查询与多表连接查询效率对比

2024-04-02 19:04:59 312人浏览 泡泡鱼
摘要

这段时间在做项目的过程中,遇到一个模块,数据之间的联系很复杂,在建表的时候就很纠结,到底该怎么去处理这些复杂的数据呢,是单表查询,然后在业务层去处理数据间的关系,还是直接通过多表连接

这段时间在做项目的过程中,遇到一个模块,数据之间的联系很复杂,在建表的时候就很纠结,到底该怎么去处理这些复杂的数据呢,是单表查询,然后在业务层去处理数据间的关系,还是直接通过多表连接查询来处理数据关系呢?

通过查阅资料和阅读博客,有以下两个回答:

一、《高性能Mysql》中的回答

很多高性能的应用都会对关联查询进行分解。简单地,可以对每个表进行一次单表查询,然后将结果在应用程序中进行关联。例如,下面这个查询:


select * from tag
join tag_post on tag_post.tag_id=tag.id
join post on tag_post.post_id=post.id
where tag.tag='mysql';

可以分解成下面这些查询来代替:


Select * from tag where tag='mysql';
Select * from tag_post where tag_id=1234;
Select * from post where id in(123,456,567,9989,8909);

到底为什么要这样做?

咋一看,这样做并没有什么好处,原本一条查询,这里却变成了多条查询,返回结果又是一模一样。

事实上,用分解关联查询的方式重构查询具有如下优势:(高并发、高性能的应用中,一般建议使用单表查询)
1. 让缓存的效率更高。许多应用程序可以方便地缓存单表查询对应的结果对象。另外对于MySQL的查询缓存来说,如果关联中的某个表发生了变化,那么就无法使用查询缓存了,而拆分后,如果某个表很少改变,那么基于该表的查询就可以重复利用查询缓存结果了。

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

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

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

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

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

7. 单表查询有利于后期数据量大了分库分表,如果联合查询的话,一旦分库,原来的sql都需要改动。

8. 上次看到某个CTO技术分享,公司规定底层禁止用join联合查询。数据大的时候确实慢。

9. 联合查询或许确实快,但是mysql的资源通常比程序代码的资源紧张的多。

二、其他的一些回答

情景假设:假设网站有一个公司库版块,我想搜索某城市的所有公司。

数据表:tbl_company (t1)、 tbl_city (t2)。

例1:

t1表中存cityid 根据id做表连接查询

select * from t1 inner join t2 on t1.cityid=t2.cityid;

例2:

t1表中存cityName 用户前台点击上海市,则把上海市的id传到后台(不考虑传cityName),

根据id查出cityName select cityName from t2 where cityid= #{cityid};

然后 select * from t1 where cityName = #{cityName};

两者区别:例1中只做了一次表关联查询,例2中分别做了两次单表查询。

考虑到数据量大,多表连接查询会影响查询效率所以都优化为单表查询。 TP:以上是在不使用索引的情况下

请问哪种效率会更高些?

答:sql优化与业务也有关系,这条语句的查询会不会频繁,要不要考虑2次连接带来的开销,如果这些都不用考虑的话,都没有索引的情况下,感觉相差不大,2应该略优于1。

数据没有特别大的情况还是级联查询快。

对于传统的数据库涉及来说, 尽可能减少数据库查询次数.

BUT, 1. mysql都对处理连接/断开连接, 回复小而简单的 查询是非常快的; 2.现在的网络已经非常快了. 所以多个小的查询对mysql来说可能更快一些.

最后, 大神也没有结论哪个更好. 呵呵, 其实整本书都明确表达一个意思, 测试测试! 做benchmark! 对于自己的数据环境, 把两种方式都测试一下. 用数据说话.

三、总结

个人建议还是用单表查询!在应用层做数据之间的关联会更好!

以上就是MySql单表查询与多表连接查询效率问题的详细内容,更多关于MySql单表与多表连接查询效率的资料请关注编程网其它相关文章!

您可能感兴趣的文档:

--结束END--

本文标题: MySql数据库单表查询与多表连接查询效率对比

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

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

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

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

下载Word文档
猜你喜欢
  • MySql数据库单表查询与多表连接查询效率对比
    这段时间在做项目的过程中,遇到一个模块,数据之间的联系很复杂,在建表的时候就很纠结,到底该怎么去处理这些复杂的数据呢,是单表查询,然后在业务层去处理数据间的关系,还是直接通过多表连接...
    99+
    2022-11-12
  • MySQL数据库:多表连接查询
    多表连接查询 注意:使用连接技术建议将表经行重命名! # explain 检索连接是否达标 # 内连接 # 语法1 from 表1 inner join 表2 on 主键字段=外键字段 [where 条件表达式] # 语法2 ...
    99+
    2022-01-30
    MySQL数据库:多表连接查询
  • MySQL数据库多表查询
    目录 MySQL数据库多表查询 多表查询 子查询 联合查询 交叉连接 内连接 外连接 ...
    99+
    2017-06-26
    MySQL数据库多表查询
  • 【MySQL数据库】- 多表查询
    🍁博客主页:👉@不会压弯的小飞侠 ✨欢迎关注:👉点赞👍收藏⭐留言✒ ✨系列专栏:👉MySQL数据库专栏 ✨欢迎加入社区: 👉不会压弯的小...
    99+
    2023-08-17
    数据库 mysql sql
  • MySQL数据库查询之多表查询总结
    目录多表关系表与表之间的联系:一对多(多对一)多对多一对一多表查询多表查询的分类1.连接查询:2.子查询内连接外连接自连接联合查询子查询标量子查询列子查询行子查询表子查询多表查询案例...
    99+
    2022-11-13
    mysql多表查询语句 mysql多表连接查询方式 mysql多表查询面试题
  • 如何对MYSQL多表实现连接查询
    下面一起来了解下如何对MYSQL多表实现连接查询,相信大家看完肯定会受益匪浅,文字在精不在多,希望如何对MYSQL多表实现连接查询这篇短内容是你想要的。3种连接方式的区别:INNER JOIN(内连接,或等...
    99+
    2022-10-18
  • MySQL数据库中多表查询之内连接,外连接,子查询的示例分析
    小编给大家分享一下MySQL数据库中多表查询之内连接,外连接,子查询的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!多表...
    99+
    2022-10-18
  • MySQL---表数据高效率查询(简述)
    目录 前言 一、聚合查询 💖聚合函数 💖GROUP BY子句 💖HAVING 二、联合查询 💖内连接 💖外连接 💖自连接 Ὁ...
    99+
    2023-08-31
    mysql 数据库 笔记
  • MySQL数据库查询进阶之多表查询详解
    目录一、多表查询1.引出2.笛卡尔积3. 笛卡尔积的解决方法二、多表查询分类1.等值连接和非等值连接2.自连接和非自连接3.内连接和外连接4.自然连接5.using连接三、子查询1....
    99+
    2022-11-13
  • MySQL数据库查询中怎么实现多表查询
    今天小编给大家分享一下MySQL数据库查询中怎么实现多表查询的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。一、多表查询多表查...
    99+
    2023-06-29
  • MySQL数据库中的多表查询
    这期内容当中小编将会给大家带来有关MySQL数据库中的多表查询,以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。多表查询查询结果来自于多张表,即多表查询子查询:在SQL语句嵌套着查询语句,...
    99+
    2022-10-18
  • MySQL数据库单表查询的示例
    这篇文章主要介绍MySQL数据库单表查询的示例,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!一、 简单查询1.     Select语句Select [...
    99+
    2022-10-18
  • mysql数据库表的多条件查询
    mysql数据库表的多条件查询 一、select语句基本查询 SELECT 字段1,字段2....FROM 表名[WHERE 条件] [LIMIT N][ OFFSET M] select可以返回多条数据也可以返回一条数据...
    99+
    2023-08-22
    数据库 mysql sql
  • Mysql数据库理论基础之五--SELECT单多表查询、子查询、别名
    一、简介由MySQL AB公司开发,是最流行的开放源码SQL数据库管理系统,主要特点:1、是一种数据库管理系统2、是一种关联数据库管理系统3、是一种开放源码软件,且有大量可用的共享MySQL软件4、MySQ...
    99+
    2022-10-18
  • mysql数据库如何实现连表查询
    这篇文章将为大家详细讲解有关mysql数据库如何实现连表查询,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。  1.首先介绍表连接分类(内连接,外连接,交叉连接)和连接方法...
    99+
    2022-10-18
  • mysql如何查询数据库有多少表
    这篇文章主要为大家展示了“mysql如何查询数据库有多少表”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“mysql如何查询数据库有多少表”这篇文章吧。 ...
    99+
    2022-10-19
  • mysql数据库实现单表查询的方法
    这期内容当中小编将会给大家带来有关mysql数据库实现单表查询的方法,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。数据库单表查询的方法:1、select查询操作...
    99+
    2022-10-18
  • Mysql数据库入门基础篇--mysql 多表查询
    【Mysql数据库入门基础篇--mysql 多表查询 🔻一、mysql 多表查询1.1 🍃 7种sql joins 的实现1.2 🍃 错误写法-...
    99+
    2023-09-05
    数据库 mysql sql mysql多表查询 select linux 运维
  • mysql如何查询数据库有多少张表
    这篇文章主要介绍“mysql如何查询数据库有多少张表”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“mysql如何查询数据库有多少张表”文章能帮助大家解决问题。 ...
    99+
    2022-10-19
  • 查询mysql数据库表单和使用函数介绍
    下文主要给大家带来查询mysql数据库表单和使用函数,希望这些内容能够带给大家实际用处,这也是我编辑查询mysql数据库表单和使用函数这篇文章的主要目的。好了,废话不多说,大家直接看下文吧。单表查询准备一张...
    99+
    2022-10-18
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作