从mysql表中删除超过100,000行 - 服务器崩溃

时间:2012-05-18 21:57:49

标签: mysql

我有一个问题,当我尝试从mysql表中删除超过100,000行时,服务器会冻结,并且不再访问其网站了!

我等了2个小时,然后重新启动了服务器并恢复了帐户。

我使用了以下查询:

DELETE FROM `pligg_links` WHERE `link_id` > 10000

-

SELECT* FROM `pligg_links` WHERE `link_id` > 10000 

完美运作

有更好的方法吗?

3 个答案:

答案 0 :(得分:2)

您可以删除较小集合中的行。一次删除1000行的快速脚本应该可以看到你。

答案 1 :(得分:1)

对于大型数据集,“从中删除”可能非常昂贵。

我建议使用分区。

在PostgreSQL和MySQL中可能会略有不同,但在PostgreSQL中,您可以创建许多表,这些表是较大表或分区的“分区”。查询和诸如此类可以在较大的表上运行。在正确分区的情况下,这可以大大提高查询的速度。此外,您只需删除分区即可删除分区。这种情况发生的速度非常快,因为它在某种程度上等同于删除表格。

表分区的文档可以在这里找到:

http://www.postgresql.org/docs/8.3/static/ddl-partitioning.html

答案 2 :(得分:0)

确保您在link_id列上有索引。 并尝试一次删除像10.000这样的块。 从表中删除是非常省钱的操作。

相关问题