SQL-3.77亿张表格的性能低下的SELECT查询

hdraven

我得到了一个具有以下结构的表:

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'吗?

Shnugo

我不确定我是否理解正确:

如果在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] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章