postgresqlの大きなテーブルを1行のテーブルに結合しようとしています。はい、私はちょうどこの単一の行のテーブルから値を取得し、私のクエリに書かれたことがわかりますが、そこには210の列があります。1 = 1とクロス結合の結合
私の質問はこれです.1つの行テーブルをクロスジョインを使用して結合するか、トートロジー(1 = 1など)で通常の結合を使用する必要があります。これらの方法のいずれかが遅くなることに縛られていますか?
また、3番目に速い方法がありますか?
postgresqlの大きなテーブルを1行のテーブルに結合しようとしています。はい、私はちょうどこの単一の行のテーブルから値を取得し、私のクエリに書かれたことがわかりますが、そこには210の列があります。1 = 1とクロス結合の結合
私の質問はこれです.1つの行テーブルをクロスジョインを使用して結合するか、トートロジー(1 = 1など)で通常の結合を使用する必要があります。これらの方法のいずれかが遅くなることに縛られていますか?
また、3番目に速い方法がありますか?
理由は1=1
が存在する理由は、文字列を連結することによって動的SQL文を簡単に作成できるようにすることです(パラメタライゼーションなどの通常の保障措置)。その中1=1
と句は最初の節、およびSQLエンジンは一般1=1
を最適化するの存在を確認することなく、SQLに追加される追加WHERE
条件を可能にするので、何ら性能はありませんWHERE事前定義されたを有する
差。
他の文脈では、1=1
は一般に無害ですが、特に有用ではありません。
注意すべきことは、テーブルの1つが空の場合、クロスジョインは空のテーブルになります。テーブルの1つが空でレコードが必要な場合は、1 = 1に外部結合(たとえば、左、右、または完全)が必要な場合があります。
問題はなんですか?参加条件には210列すべてが必要ですか? –
あなたの意思を明確にするために 'cross join'を使います。それ以外の場合は、来年あなた(またはあなたのコードを変更しなければならない人)は、その愚かな '1 = 1'が意味すると思われるものが不思議に思うでしょう。 –
ソリューションを求める際のパフォーマンスを測定します。 –