我得到了一个具有以下结构的表:
Id | clientid | type | timeStamp | message |
我正在使用此查询来获取表的第一行以开始删除行,但是崩溃了数据库:
SELECT TOP 10 [id]
,[clientid]
,[type]
,[timeStamp]
,[message]
FROM [db].[dbo].[table]
WHERE timeStamp LIKE '%2014-01-01 00:00:00.000%'
有什么方法可以使第一行不崩溃而在到达前将其删除timeStamp
'2016-01-01 00:00:00.000'
吗?
我不确定我是否理解正确:
如果在TimeStamp列上设置索引,则绝对快要过滤给定日期更大或更小的行。
这些行将从TimeStamp小于2016-01-01的表中删除所有内容。只有当前条目会保留...
DELETE FROM myTable
WHERE ID IN(SELECT ID
FROM myTable AS innerTbl
WHERE innerTbl.Timestamp<{ts'2016-01-01 00:00:00'}
)
每个通话将删除1000行。“ GO”后面的数字将执行此代码段377000次。用较小的数字进行测试...
BEGIN TRANSACTION;
DELETE FROM myTable
WHERE ID IN(SELECT TOP 1000
ID
FROM myTable AS innerTbl
WHERE innerTbl.Timestamp<{ts'2016-01-01 00:00:00'}
);
COMMIT;
GO 377000
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句