删除是一项基础性的数据操作,其履行效力是决定系统效力的重要因素之一,在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可以大幅提高删除效力。