自己原文公众号: https://mp.weixin.qq.com/s/NYEhQXgPA299dlyYNUmrOw
我个人是反对的,我觉得2个表关联是正常的,单表最好。如果特殊最多3个表关联,3个以上是不对的(性能不好,建议优化)。即使在Oracle上,不管MYSQL还是PostgesSQL。
某个SQL执行了几分钟大致是这样的select * from 6个表关联 limit 70000,10000.
最后Query_time: 255.707167 Lock_time: 0.002991 Rows_sent: 10000 Rows_examined: 8217255
大家觉得不可能,最大的表才140万左右,怎么可能800万的扫描。
这个以前讲过,今天再次数据说话,重现一下。t1 t2 t3各100万。
结果请看,有几个表就扫描了几倍。上面这个最终显示10条,但是扫描了300030 。就是100010X3

如果是10个表关联,那就是100010X10
所以,千万要控制表的关联数量,这是根本。如果历史原因已经很多表了,那么where条件一定要控制住,大表不要全表。如果都控制不住,那就可能要出问题了。
表设计把控难度相对大,最好一开始就介入,结合需求设计。而不是把以前的项目的表拿过来用,然后再改。这样需求和表就不在一个频道上了。
