3

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

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

我使用了以下查询:

DELETE FROM `pligg_links` WHERE `link_id` > 10000

-

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

完美运行

有一个更好的方法吗?

4

3 回答 3

2

您可以删除较小集合中的行。一次删除 1000 行的快速脚本应该可以帮助您完成。

于 2012-05-18T22:10:40.087 回答
1

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

我建议使用分区。

这在 PostgreSQL 和 MySQL 中可能略有不同,但在 PostgreSQL 中,您可以创建许多表,这些表是较大表的“分区”或在一个分区上。查询和诸如此类的东西可以在更大的表上运行。如果分区正确,这可以大大提高查询速度。此外,您可以通过简单地删除分区来删除它。这发生得非常非常快,因为它在某种程度上相当于删除一个表。

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

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

于 2012-05-18T22:39:30.807 回答
0

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

于 2012-05-18T22:10:40.287 回答