如何使用MySql获得高速性能?

时间:2015-05-28 04:56:16

标签: mysql database performance

我目前正在处理 MySql 数据库,我们处理大量数据。很多时候我们匹配并删除数据库中的重复或不适当的数据,但执行需要很长时间(有时2或3天)。

我想知道,如果有任何方法可以提高查询执行速度并快速获得结果。

请建议。

例如:

有两个表,第一个表有1百万个记录,第二个表也有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我不喜欢这样的解决方法,我可能首先重构你的架构。