我有两个完全相同的表 - 产品和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),然后从上述结果中填充这些产品的数组查询。 –