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

サブクエリが相互に排他的である必要がある結果を返すレコードを除外する

    そしてそれは醜いものでした。 DBに他の重要な負荷がかかるまでは正常に機能し、その後はすべて非常に遅くなります。これは主にサーバーのIO制限によるものですが、より簡単なアプローチはisfictionとisNonFictionをMEMORYテーブルに取り込むことであり、DELETEステートメントは次のようになります。

        DELETE tmp_table FROM tmp_table
             INNER JOIN
             (
                SELECT ASIN, MAX( isFiction ) AS isFiction, MAX( isNonFiction ) AS isNonFiction
                FROM tmp_table
                GROUP BY ASIN
                HAVING isFiction =1
                AND isNonFiction =1
             ) D
             WHERE D.ASIN=tmp_table.ASIN AND tmp_table.isNonFiction=1
    

    テストでは、これによりプロセス全体が約90秒から10秒に短縮されます。




    1. mysql_real_escape_string VSaddslashes

    2. DATETIMEFROMPARTS()SQL Server(T-SQL)の例

    3. PostgreSQLの日付から曜日名を取得する

    4. タイムゾーンオフセットを使用して日付を取得する