MSSQL中删除的选择:新的思路提高效率(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可以大幅提高删除效率。