我目前正在处理 MySql 数据库,我们处理大量数据。很多时候我们匹配并删除数据库中的重复或不适当的数据,但执行需要很长时间(有时2或3天)。
我想知道,如果有任何方法可以提高查询执行速度并快速获得结果。
请建议。
例如:
有两个表,第一个表有1百万个记录,第二个表也有1百万个。
如果匹配,我们匹配两个表并从第二个表中删除数据。
那就是它。
答案 0 :(得分:2)
这是一个很大的问题"如何更快地删除"。
如果没有任何具体说明,我建议您在表格中使用UNIQUE以防止重复。
如果您需要有关其他数据库的建议,那么可能您可以切换到某种类型的无SQL数据库,例如Redis,这非常快,但您需要了解如何以及在何处使用它来从中获取最大利润。
您是否在要删除的表格上有索引?
你使用任何类型的分片吗?
你的桌子上使用了什么引擎?
你使用什么Mysql版本?
您是否尝试过"EXPLAINing"删除查询?
"从MySQL 5.6.3开始,EXPLAIN提供有关SELECT,DELETE,INSERT,REPLACE和UPDATE语句的信息。在MySQL 5.6.3之前,EXPLAIN仅提供有关SELECT语句的信息。"
修改强>
在比较2个表时添加了删除示例:
我仍然建议使用"解释"告诉我们你是否使用索引。
但无论如何,而不是直接上升" DELETE FROM ..."你可以插入临时表并在之后重命名。像这样:
CREATE TABLE tmp LIKE yourtable;
INSERT INTO tmp SELECT <your required data from 2 tables>;
RENAME yourtable TO deleteme, tmp TO yourtable;
DROP TABLE deleteme;
Altough我不喜欢这样的解决方法,我可能首先重构你的架构。