一开始我觉得大家可能也是没那么复杂的,架不住用的多,时间一长。二十年的系统,怎么可能不复杂?比如一个select a,b from t where t.id=1。用着用着觉得新开展了一个业务,有个 x表。x表单独也有他的价值,但是如果和t在一起还有价值。那么就select t.a, (select x.m from x where t.id=x.id and limit 1) t.b from t where t.id=1然后过了半年可能人员变动了。业务新需要其他字段。select t.a, (select x.m from x where t.id=x.id and limit 1), t.b,(select x.o from x where t.id=x.id and limit 1) from t where t.id=1。这里需要站在开发角度考虑一下,为什么会这样。如果读过我写的书的话,就知道为什么这样了。多人协作以及历史迭代就会这样。就像一句话,老师要求你不断给这句话加修辞让这句话更丰富一样。最后这句话到处是插入符。最后形成了祖传代码。