sql >> データベース >  >> RDS >> Mysql

SQL-OR演算子を使用した左結合(MySQL)

    編集

    何が必要かよくわかりません

    • 期待される結果を表示できますか
    • 「パフォーマンスの観点から、それを殺す」とはどういう意味か教えてください(実行時間の20秒になりますか?)

    より効率的だとは思いませんが、試してみてください。

    select 
        *
    from
        tableA as a
        left join tableB as b1
            on a.id=b1.id1 
            and b1.col2='Red'
        left join tableB as b2
            on a.id=b2.id2 
            and b2.col2='Blue'
    where 
        (b1.id1 is not null or b2.id2 is not null)
        or (b1.id1 is null and b2.id2 is null)
    

    SELECTで結果を管理する必要があります CASE WHEN ...

    パフォーマンスを比較し、適切な列にインデックスを配置できます(完全なテーブルとクエリの内容によって異なりますが、ここではid, id1 and col2である必要があります。 )



    1. InnoDB/MyISAMレコードを挿入するために必要な時間の違い

    2. 時間減算形式の結果

    3. どのmysqlパーティショニングモデルをいつ使用するか

    4. データベース名がすべて大文字の場合、rPostgreSQLを使用してPostgresqlにテーブルを書き込む