और यह बदसूरत था। यह ठीक काम करता है जब तक कि डीबी पर कोई अन्य महत्वपूर्ण भार न हो, और फिर यह सब बहुत धीरे-धीरे हो जाता है। यह ज्यादातर सर्वर की आईओ सीमाओं के लिए नीचे है, लेकिन आसान तरीका यह था कि मेमोरी टेबल में इफिक्शन और नॉनफिक्शन प्राप्त करें और 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 सेकंड तक कम कर रहा है।