我有兩個完全相同的表 - 產品和products_temp。我想比較兩個表,我目前正在使用下面的查詢,如果每個表中沒有多少產品,那麼它的工作正常,但是我現在每個都有大約10,000個,它需要永久運行,然後隨着一個錯誤而死「 MySQL服務器已經消失'。優化比較查詢
請看看下面的查詢,並建議如何優化它
SELECT MIN(id) AS id , product_id, product_name, program_id, program_name, deeplink, price, image_url, merchant_category, category_id, category_path, brand, last_updated, tab
FROM (
SELECT id , product_id, product_name, program_id, program_name, deeplink, price, image_url, merchant_category, category_id, category_path, brand, last_updated, 'Temp' AS tab
FROM products_temp AS alias1
UNION ALL
SELECT id , product_id, product_name, program_id, program_name, deeplink, price, image_url, merchant_category, category_id, category_path, brand, last_updated, 'Current' AS tab
FROM products AS alias2
)AS alias_table
GROUP BY id
HAVING COUNT(id) =1 #
當你說「比較兩個表」時,你想要做什麼*到*看看你現有的查詢,看起來你發現了表之間的*差異*(即那些只存在於一個表中的記錄,而不是其他記錄) - 但爲了清楚起見,這就是你所追求的內容? – eggyal
可能重複[如何計算MySQL中的表之間的區別?](http://stackoverflow.com/questions/430922/how-to-calculate-difference-between-tables-in-mysql) – eggyal
是的,獲得兩個表格之間的區別。在此查詢之前,我清空products_temp表,使用新數據填充它,然後將其與產品表進行比較,以查看哪些產品已添加(temp)/刪除(current),然後從上述結果中填充這些產品的數組查詢。 –