我有一个问题,当我尝试从mysql表中删除超过100,000行时,服务器会冻结,并且不再访问其网站了!
我等了2个小时,然后重新启动了服务器并恢复了帐户。
我使用了以下查询:
DELETE FROM `pligg_links` WHERE `link_id` > 10000
-
SELECT* FROM `pligg_links` WHERE `link_id` > 10000
完美运作
有更好的方法吗?
答案 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这样的块。 从表中删除是非常省钱的操作。