应用中有些复杂逻辑,需要多个条件查询数据。这些条件分布在2~4张表中,那么一般两种方式:
      1. 写一条复杂sql,多表关联查询。在服务层代码中只需要使用这条sql。
      2. 写多条简单sql,一般是单表查询。在服务层代码中写循环,通过多次使用获取数据。
那么,我们应该优先是用什么方式?他们的使用场景分别是什么?

解决方案 »

  1.   

    如果说应用端不做任何处理,只是简单循环,然后不停调用多个简单 SQL;每次网络来回加上 SQL 运行的时间,数据量增长以后会导致性能急剧下降。复杂的多表连接需要注意 SQL 语句的性能问题,各种索引建立起来。通常来说第一种方式会更可靠一些,因为你用的是关系型数据库,而不是 NoSQL。
      

  2.   

    建议方案二
    便于后续问题排查和交接,一句复杂的sql,对于一般开发人员来说,不建议如果是一次开发,后续没有任何变动,建议方案一
      

  3.   

    从性能上考虑,毫无疑问选择方案1。
    如果SQL非常复杂,可以考虑拆解成2~3个SQL不建议第二种方案,除非数据量很小,没有什么性能问题
      

  4.   

    关联的话性能是个大问题,可以参考《大主子表关联的性能优化方法》《如何优化 JOIN 性能 》这两篇文章