多表联查对比多次单表

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

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

  1. 多次单表查询,让缓存的效率更高
  1. 许多应用程序可以方便地缓存单表查询对应的结果对象
  2. 对于MYSQL的查询缓存来说,如果关联中的某个表发生了变化,就无法使用查询缓存。而拆分后如果某个表很少改变,那么基于该表的查询就可以重复利用查询缓存结果。
  1. 将查询分解后,执行单个查询可以减少锁的竟争。
  2. 在应用层做关联,可以更容易对数据库进行拆分,更容易做到高性能和可扩展。很多高性能的应用都会对关联查询进行分解。
  3. 查询效率也可能会有所提升,使用 IN() 代替关联査询,可以让 MYSQL 按照 ID 顺序进行査询,可能比随机的关联要更高效。
  4. 可以减少冗余记录的查询;在应用层做关联査询,意味着对于某条记录应用只需要查询一次,而在数据库中做关联查询,则可能需要重复地访问一部分数据。从这点看,这样的重构还可能会减少网络和内存的消耗。
  5. 这样做相当于在应用中实现了哈希关联,而不是使用 MYSQL 的嵌套循环关联。某些场景哈希关联的效率要高很多。
  6. 单表查询有利于后期数据量大了分库分表,如果联合查询的话,一旦分库,原来的sql都需要改动。
  7. 大数据量适合多次单表,小数据量可能适合多表联查(不要超过三张表避免笛卡尔积过大),因为多次查询有多次发送sql的开销。实际场景根据测试选用性能高者。
目录
相关文章
|
存储 关系型数据库 MySQL
MySQL数据库的跨库查询和联合查询技巧
MySQL数据库的跨库查询和联合查询技巧
|
关系型数据库 PostgreSQL
|
5月前
|
存储 关系型数据库 MySQL
MySQL数据库—多表设计与关联查询
MySQL数据库—多表设计与关联查询
|
7月前
|
SQL
深入了解关联查询和子查询
深入了解关联查询和子查询
73 0
JOIN多表关联查询
JOIN多表关联查询
56 0
|
关系型数据库 MySQL
MySQL查询之 联合主键
MySQL查询之 联合主键
240 0
|
SQL API 数据库
Mybatits-plus实现简单的多表联查和分页操作
mybatits-plus提供了简单的curd单表操作API,可以使用多样的方式实现。但是多表联查的时候,我遇到了一些困难,不可以使用通过 Lambda 表达式,方便的编写各类查询条件,无需再担心字段写错。于是就回归到了Mapper.xml文件,这种方法实现起来简单,也可以实现动态sql,非常方便。
165 0
|
SQL 数据库
数据库(3)--嵌套查询和连接查询
数据库(3)--嵌套查询和连接查询
201 0
数据库(3)--嵌套查询和连接查询
|
存储 SQL 小程序
小程序中的多表联合查询
小程序中的多表联合查询
小程序中的多表联合查询