gpt4 book ai didi

mysql - ExecuteNonQuery 在必须删除大量行时不删除

转载 作者:行者123 更新时间:2023-11-29 12:12:13 25 4
gpt4 key购买 nike

我想检查数据库中的所有表并删除具有特定 id 的所有行。当行数较小时,效果很好。

在特定表中,行数为 900000,这不再起作用。

这是我当前的代码:

Using connection = New MySqlConnection(connectionString)
Try
connection.open()
If listOfTables.Count > 0 Then
For Each table As String In listOfTables
Dim sqlc As String = "DELETE FROM " & dbConnection.DbName & "." & table & " WHERE id=" & cNumber& ";"

Dim command3 As New MySqlCommand(sqlc , connection)
command3.ExecuteNonQuery()
command3.Dispose()
Next
connection.close()
End If
Catch ex As Exception

End Try

End Using

最佳答案

一次性从表中删除 900000 行并不是一个好主意。为什么不在 MYSQL 中编写一个存储过程来完成您的工作。您可以尝试创建存储过程,该过程在循环中以 1000 行为一组删除记录,并且在删除所有行之前不要停止。

尝试以下伪代码:

 @counter = 0
LOOP
DELETE FROM Table_name
WHERE id BETWEEN @counter AND @counter +1000
AND "Your conditions"
SET @counter = @counter + 1000
sleep 2 -- Take a sleep before next
UNTIL end of table

它使用 id 列作为主键并自动递增

关于mysql - ExecuteNonQuery 在必须删除大量行时不删除,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30442164/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com