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

如何使用MySql获得高速性能?,mysql,database,performance,Mysql,Database,Performance,我目前正在开发MySql数据库,我们在这个数据库上处理大量数据。很多时候,我们从数据库中匹配并删除重复或不适当的数据,但执行起来需要很长的时间(有时需要2或3天) 我想知道,是否有任何方法可以提高查询执行速度并快速得到结果 请建议 例如: 有两个表,第一个表有100万条记录,第二个表也有100万条记录 我们正在匹配这两个表,如果匹配,则从第二个表中删除数据 就是这样。这是一个巨大的问题“如何更快地删除” 没有任何具体说明,我可以建议您在表格中使用,以防止重复 如果你想得到关于其他数据库的建议,那

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

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

请建议

例如:

有两个表,第一个表有100万条记录,第二个表也有100万条记录

我们正在匹配这两个表,如果匹配,则从第二个表中删除数据


就是这样。

这是一个巨大的问题“如何更快地删除”

没有任何具体说明,我可以建议您在表格中使用,以防止重复

如果你想得到关于其他数据库的建议,那么也许你可以切换到类似的非sql数据库类型,这是难以置信的快,但是你需要了解如何以及在哪里使用它来从中获得最大的利润

要从中删除的表上有索引吗

你用过任何形式的碎片吗

你们的桌子用的是什么发动机

您使用什么Mysql版本

您是否尝试了删除查询

“从MySQL 5.6.3开始,解释提供有关SELECT、DELETE、INSERT、REPLACE和UPDATE语句的信息。在MySQL 5.6.3之前,解释只提供有关SELECT语句的信息。”

编辑

添加了在比较两个表时删除的示例后:

我仍然建议使用“解释”并告诉我们是否使用索引

但无论如何,您可以将其插入临时表中,然后对其进行重命名,而不是直接“删除自…”。像这样:

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;
创建与表格类似的表格tmp;
插入tmp选择;
将yourtable重命名为deleteme,将tmp重命名为yourtable;
删除表格删除我;

尽管我不喜欢这样的解决方法,但我可能会首先重构您的体系结构。

您可以在其上放置一个唯一的索引,以防止重复出现在第一位置。如果以他们喜欢的方式使用,大多数数据库引擎都能够获得优异的性能。我想你最好能描述一下你在删除和MYSQL方面有什么问题MYSQL没有问题,我只是想加快查询执行。MYSQL虽然性价比很高,但它没有任何领先的商业DBMS中都能找到的那种现代顶级统计优化器。这些应该可以在代码和数据更改很少的情况下提高性能。其中最大的三个是:Oracle、IBM DB2和Microsoft SQL Server(我也听说了Postgres的好消息,但我个人无法证实这一点)。其中任何一个都应该满足您的要求。您应该首先防止不正确的和重复的数据最终出现在数据库中(例如使用约束,或在插入之前进行适当的检查),而不是反过来处理。也就是说,我看不出从有一百万条记录的表中删除记录会花费多少天(如果需要几分钟,我甚至会感到惊讶)。首先,选择第二个表所需的数据,然后将其插入临时表,然后删除原始的第二个表。然后将临时表重命名为第二个表的原始名称。第二个表将更改,但没有任何“删除自…”查询。这就是这种方法的要点