所以我有两个表的数据库。并且它们之间有外键关系。我想做一些测试,但桌子太大了。我想删除这些表中的大部分数据,只在第一个表中保留大约 500 行,在第二个表中保留相关行,这样测试会更快。我怎样才能做到这一点?
一种简单的方法是将这些表中的行提取到临时表中,然后截断源表。
例子:
-- Load the top 500 UUT_RESULT records into a temp table
SELECT TOP (500) *
INTO #UUT_RESULT_TEMP
FROM UUT_RESULT
ORDER BY ID
-- Load the related STEP_RESULT records into a separate temp table
SELECT *
INTO #STEP_RESULT_TEMP
FROM STEP_RESULT
WHERE UUT_RESULT IN (SELECT TOP (500) FROM UUT_RESULT ORDER BY ID)
-- Remove the record
TRUNCATE TABLE STEP_RESULT
TRUNCATE TABLE UUT_RESULT
-- Load the records back in
INSERT INTO UUT_RESULT
SELECT * FROM #UUT_RESULT_TEMP
INSERT INTO STEP_RESULT
SELECT * FROM #STEP_RESULT_TEMP
Run Code Online (Sandbox Code Playgroud)
使用 TRUNCATE 将有助于加快速度,因为这是一个最少记录的操作。
归档时间: |
|
查看次数: |
1102 次 |
最近记录: |