我正在将postgresql中的一个大表连接到一个包含1行的表中.是的,我知道我可以从这个单行表中获取值并将它们写入我的查询中,但是有210列.
所以我的问题是这样的:我应该使用交叉连接或在重言式上使用常规连接(1 = 1或其他)将单行表连接到所有内容.这些方式中的任何一种都必然会变慢吗?
还是有第三种更快的方式?
需要注意的一件事是,如果其中一个表为空,则交叉连接将导致一个空表。如果您的表之一可能是空的,而您仍然需要记录,则您可能需要在 1=1 上进行外部联接(例如左联接、右联接或全联接)。
存在的原因1=1是为了通过将字符串连接在一起(当然还有参数化等常见的保护措施)来更轻松地创建动态 sql 语句。
预定义 WHERE 子句1=1允许将附加WHERE条件添加到 SQL 中,而无需首先检查 WHERE 子句是否存在,并且 SQL 引擎通常会优化该子句,因此1=1不会有性能差异。
在任何其他情况下,1=1通常是无害的,但不是特别有用。