Tip:不建议执行三张表以上的多表联合查询

对数据量不大的应用来说,多表联合查询开发高效,但是多表联合查询在表数据量大,并且没有索引的时候,如果进行笛卡儿积,那数据量会非常大,sql执行效率会非常低

多次单表查询在service层进行合并好处:

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

2、多表信息联合的列表页面分页显示,只需要显示一部分的数据,如果是多表联合查询那要把所有数据联结查出来再执行limit,如果是多次单表查询,先对单表进行筛选,先执行limit再与其余表去关联,数据量会大大减小

3、如果数据库没有进行读写分离(主从备份),在并发量高的时候,由于写表会加排他锁,把多表联合查询改成单表查询后锁的粒度变小,减少了锁的竞争

4、在数据量变大之后,普遍会采用分库分表的方法来缓解数据库的压力,采用单表查询比多表联合查询更容易进行分库,不需要对sql语句进行大量的修改,更易扩展.分库分表的中间件一般对跨库join都支持不好

5、查询本身效率也可能会有所提升。查询 id 集的时候,使用 IN()代替关联查询,可以让 MySQL 按照 ID 顺序进行查询,这可能比随机的关联要更高效。

6、业务高速增长时,数据库作为最底层,最容易遇到瓶颈,单机数据库计算资源很贵,数据库同时要服务写和读,都需要消耗CPU,为了能让数据库的吞吐变得更高,

而业务又不在乎那几百微妙到毫秒级的延时差距,业务会把更多计算放到service层做,毕竟计算资源很好水平扩展,数据库很难啊,这是一种重业务,轻DB的架构

7、可以减少冗余记录的查询,在应用层做关联查询,意味着对于某条记录应用只需要查询一次,而在数据库中做关联查询,则可能需要重复地访问一部分数据。

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

多次单表查询在service层进行合并缺点:

1、需要进行多次的数据库连接

2、代码更复杂

总结:

个人觉得还是做多次单表查询更好,更易扩展,当然数据量不大时,直接联合查询开发更方便

原文:https://www.cnblogs.com/youmingDDD/p/11921187.html

mysql同张表关联多次查询_MySQL多次单表查询和多表联合查询相关推荐

  1. mysql从表中转移数据文件_MySQL 数据文件迁移找不到表

    需要对一个生产库做一个repication,需要将master的数据导入到slave.个人觉得使用mysqldum在导入的时候比较费时(的确比较费时) 所以想偷懒,记录下master的index和po ...

  2. mysql longtext 查询_mysql中longtext存在大量数据时,会导致查询很慢?

    一个表,1.5w条数据,字段: id,name,content,last_update_time id,自定义主键 name,varchar类型 content是longtext类型, last_up ...

  3. datetime mysql 查询_mysql数据库时间类型datetime、bigint、timestamp的查询效率比较

    数据库中可以用datetime.bigint.timestamp来表示时间,那么选择什么类型来存储时间比较合适呢? 前期数据准备 通过程序往数据库插入50w数据 数据表: CREATE TABLE ` ...

  4. mysql view 子查询_mysql – View的SELECT包含FROM子句中的子查询

    我有两个表,我需要创建一个视图.表格是: credit_orders(id, client_id, number_of_credits, payment_status) credit_usage(id ...

  5. MySQL 表关系及多表操作(联合查询、连接查询、子查询)

    文章目录 表关系 一对一关系 一对多关系 多对多关系 总结 MySQL多表操作 联合查询 联合查询排序 连接查询 交叉连接 内连接 外连接 自然连接 using关键字 子查询 表关系 表关系:一个表代 ...

  6. 【SpringBoot Data JPA】多表关联查询

    SpringBoot Data JPA 多表关联查询 前言 一.数据库架构设计 1.1 数据表结构 2.2 建立数据库表: 二.SpringBoot整合JPA多表查询 2.1 环境配置 2.2 建立数 ...

  7. Spring Data JPA--多表关联查询--实例

    原文网址:Spring Data JPA--多表关联查询--实例_IT利刃出鞘的博客-CSDN博客 简介 多表联查有以下方案 原生SQL JHQL Specification 实体关联(不推荐) 见: ...

  8. mysql中多表联合查询语句_mysql中的多表联合查询语句是什么

    mysql中的多表联合查询语句是:[select 语句1 union [union 选项] select 语句2 union [union 选项] select 语句n].多表联合查询结果是将多个se ...

  9. mysql联合查询查询语句_mysql多表联合查询语句是什么

    mysql多表联合查询语句是:使用select语句,union关键词,语法为[select 语句1 union [union 选项] select 语句2 union [union 选项] selec ...

最新文章

  1. 【图像处理】——上采样、下采样、在模板匹配中的金字塔加速策略
  2. python获取微信用户基本信息_微信开放平台扫码登录获取用户基本信息!附可用demo...
  3. oracle的磁盘测试工具orion
  4. tomcat,zookeeper,activeMQ,Kafka设置jvm参数
  5. 【SSH网上商城项目实战08】查询和删除商品类别功能的实现
  6. 模拟电子技术知识点总结
  7. Google退出中国,我同意了。
  8. arcgis批量裁剪tif文件
  9. centos检测不到磁盘_CentOS 7 安装时候检测不到空余硬盘的解决办法
  10. C#中定义装箱和拆箱详解
  11. 江南春:在不确定的市场,找到确定性的增长
  12. 高并发 WEB 服务器 nginx 源码通读中文分析注释,带详细函数注释及函数调用注释,附 github 地址,后期持续维护更新...
  13. S5PV210 串口
  14. 盘点三种卫星图分幅导出的方法
  15. 计算机窗口置顶,将想要的窗口一直置顶的具体操作步骤介绍
  16. idea设置自动导包
  17. 智慧消防让生活更加便利
  18. HTML-浮动与清除浮动
  19. python中reduce函数用法_一文读懂reduce函数
  20. centos7下使用wget命令出现证书错误

热门文章

  1. 简历解析步骤(第二步)技术与实现(5)识文字,做分类:身高、体重
  2. Windflowers(歌词)
  3. 手机连接投影机的步骤_手机怎么连接投影仪?这几招实用
  4. NLP 自古以来的各预训练模型 (PTMs) 和预训练任务小结
  5. 华为超越三星拿下第一!2019年全球5G手机出货量榜单揭晓
  6. Git 中 cat 的使用
  7. android—性能优化2—内存优化
  8. 苹果蓝牙耳机怎么样?与airpods媲美的无线耳机推荐
  9. IPsec+预共享密钥的IKE野蛮模式
  10. 时创能源将于12月7日上会:拟募资11亿元,业绩增长迅猛