И беше грозно. Работи добре, докато има някакво друго значително натоварване на 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 секунди.