减少MySQL中的记录数量

时间:2015-01-20 07:54:19

标签: mysql sql database

我的表格包含: id pointId pointValue ,大​​约有10.000.000行。

我必须通过删除90%的行来减少它,所以我需要保留每个第十条记录,并删除任何其他记录。

使用表格中的 id 并不是一个好主意,因为这不是连续数字序列。

如何通过查询来完成?

3 个答案:

答案 0 :(得分:1)

我不确定为什么你真的需要删除这么多数百万条记录 但是,以下方法可能对您有所帮助。

您可以生成动态'row_number',根据该动态10th可以过滤每个'points_table'行并删除其余记录。

示例

假设表名为delete from points_table where id NOT IN ( select id from ( select @rn:=@rn+1 as row_num, p.id from points_table p, (select @rn:=0) rn ) list_of_ids_to_be_deleted where row_num % 10 = 0 )

{{1}}

答案 1 :(得分:0)

您可以尝试: -

DELETE FROM TABLE_NAME
WHERE ID NOT IN
(SELECT ID FROM (SELECT @RN:=@RN+1, ID, POINTID, POINTVAL
                 FROM TABLE_NAME, (SELECT @RN:=0) T) T1
                 WHERE MOD(@RN,10) = 0)

这可能会对你有帮助。

答案 2 :(得分:0)

一个简单的解决方案,假设你有1000万行,应删除90%的行。

  DELETE FROM MyTable  WHERE Id IN (SELECT Id FROM MyTable LIMIT 9000000);