多表联查对比多次单表

简介: 只有聪明人才能看见的摘要~( ̄▽ ̄~)~

用分解关联查询的方式查询具有以下优势:

  1. 多次单表查询,让缓存的效率更高
  1. 许多应用程序可以方便地缓存单表查询对应的结果对象
  2. 对于MYSQL的查询缓存来说,如果关联中的某个表发生了变化,就无法使用查询缓存。而拆分后如果某个表很少改变,那么基于该表的查询就可以重复利用查询缓存结果。
  1. 将查询分解后,执行单个查询可以减少锁的竟争。
  2. 在应用层做关联,可以更容易对数据库进行拆分,更容易做到高性能和可扩展。很多高性能的应用都会对关联查询进行分解。
  3. 查询效率也可能会有所提升,使用 IN() 代替关联査询,可以让 MYSQL 按照 ID 顺序进行査询,可能比随机的关联要更高效。
  4. 可以减少冗余记录的查询;在应用层做关联査询,意味着对于某条记录应用只需要查询一次,而在数据库中做关联查询,则可能需要重复地访问一部分数据。从这点看,这样的重构还可能会减少网络和内存的消耗。
  5. 这样做相当于在应用中实现了哈希关联,而不是使用 MYSQL 的嵌套循环关联。某些场景哈希关联的效率要高很多。
  6. 单表查询有利于后期数据量大了分库分表,如果联合查询的话,一旦分库,原来的sql都需要改动。
  7. 大数据量适合多次单表,小数据量可能适合多表联查(不要超过三张表避免笛卡尔积过大),因为多次查询有多次发送sql的开销。实际场景根据测试选用性能高者。
相关文章
|
Linux 编译器 C语言
Linux五大步安装Python
Linux五大步安装Python
1405 0
Linux五大步安装Python
|
9月前
|
缓存 NoSQL Java
Spring Boot中的分布式缓存方案
Spring Boot提供了简便的方式来集成和使用分布式缓存。通过Redis和Memcached等缓存方案,可以显著提升应用的性能和扩展性。合理配置和优化缓存策略,可以有效避免常见的缓存问题,保证系统的稳定性和高效运行。
241 3
|
测试技术 C++
c++优先队列priority_queue(自定义比较函数)
c++优先队列priority_queue(自定义比较函数)
1220 0
|
编解码 对象存储 云计算
对象存储 OSS 文档体验有奖评测活动来啦,一起来完成场景体验吧
诚邀对象存储OSS用户参与文档体验评测!活动时间:8月20日至9月25日。完成3 个场景的体验评测并提供真实评分、问题说明/改进建议及体验视频,即可获得200元现金奖励。详情及流程请见活动页面与钉群通知。名额有限,速来参加!
396 7
|
敏捷开发 开发框架 JavaScript
很牛!Github 上 10 个值得学习的 Springboot 开源项目
很牛!Github 上 10 个值得学习的 Springboot 开源项目
11581 0
|
自然语言处理
|
前端开发 Java 对象存储
SpringBoot 整合七牛云上传图片
SpringBoot 整合七牛云上传图片
1351 1
SpringBoot 整合七牛云上传图片
|
SQL 缓存 关系型数据库
为什么强烈推荐你使用单表查询?(续篇)
为什么强烈推荐你使用单表查询?(续篇)
为什么强烈推荐你使用单表查询?(续篇)
vue3用指令的防抖事件
vue3用指令的防抖事件
342 0