(伪代码)
result = SELECT blah1,blah2,foreign_key FROM foo WHERE key=bar if foreign_key > 0 other_result = SELECT something FROM foo2 WHERE key=foreign_key end
如果另一个表中没有相关的行,代码需要分支,但是通过在单个SELECT语句中执行LEFT JOIN,这不能更好吗?我错过了一些性能优势吗?便携性问题?或者我只是在挑剔?
对于表大小,数据库配置的某些组合以及查询外表的频率,执行这两个查询可能比LEFT JOIN快得多.但经验和测试是唯一可以告诉你的事情.具有中等大小的表的MysqL似乎是可以接受的,IME.在一个表上执行三个查询通常比一个查询加快三个查询要快得多.我已经看到了一个数量级的加速.