复杂的逻辑应不应该写进 sql,请教一下

  1. 写一个复杂的 sql 直接取出所需要的数据
  2. 用简单 sql 取出所有相关数据,再遍历进行复杂的逻辑运算
    工作中,以上两种方法如何选择

首先, 取出所有的数据是不可取的,如果表很大, 会造成长时间的索引等待,其次,在实际的环境中, 数据库和站点往往不在一台服务器上, 这也就意味着增加了数据传输的大小, 降低了传输效率。

一般情况下,数据逻辑很复杂, 可以考虑存储过程去进行逻辑计算。如果查询出来的数据时效性不是高, 允许有时间差, 可以考虑将数据缓存到redis(设置一个容忍的过期时间), 提高效率。

肯定得选择第二种
sql语句一般最好不要加逻辑 这样方便后续维护