MSSQL中删除的选择:新的思路提高效力









删除是一项基础性的数据操作,其履行效力是决定系统效力的重要因素之一,在MSSQL中,删除数据有哪几种方式呢?本文将介绍一种新的思路,通过此思路大幅提高删除效力。



MSSQL中,比较常见的删除方式有 DELETE 语句和 TRUNCATE TABLE 两种。DELETE语句用来删除符合条件的行,它会根据SQL语句指定的条件,遍历表中的每行,凡是满足条件的行,就删除掉。而 TRUNCATE TABLE 则是清空表中所有数据,非常简单快捷。



比较这两种方式,很明显 TRUNCATE TABLE 方式效力要高,可是它没法根据条件删除数据,而且 TRUNCATE TABLE 还会触发表级别的完全性束缚和触发器,这样的做法会耗费很多时间。



那末事实上,还有另外一种更加有效的删除方法。我们可以定义一个新的临时表,然后将要删除的数据全部插入这个临时表,最后从原表中删除掉对应的数据。在该方法中,INSERT INTO 和 DELETE 操作都履行的非常快。具体的实现方式以下:



— 创建临时表


CREATE TABLE #TEMP (


`ID` int NOT NULL,


`Name` varchar(20) NULL


)



— 将要删除的数据插入临时表中


INSERT INTO #TEMP (ID, Name)


SELECT ID, Name


FROM TableName


WHERE 条件



— 删除原数据


DELETE FROM TableName


WHERE ID IN (SELECT ID


FROM #TEMP


)



— 清除临时表


DROP TABLE #TEMP



以上是一种实现快速删除的新思路,在MSSQL中若触及大量数据的删除操作可使用这类新方式来实现,相较于TRUNCATE TABLE可以大幅提高删除效力。