Spe*_*nce 5 sql entity-relationship
首先请注意,我已经看到了这个问题:使用内部联接删除TSQL
我有一个大表和几个外键关系,每个都有给定年龄的数据.我们需要定期删除比给定数据更旧的数据,以阻止数据库无限制地增长.
我正在编写一个查询,如果您按照给定的参数将从星上的每个点删除(不幸的是,这些是可配置的,并且在表之间是不同的).
在第一次删除之后,我有一个中央表,我担心我正在做两次尝试删除的工作,就像删除数据库检查条件一样.我有一套:
AND NOT EXISTS
(SELECT key
FROM table
WHERE table.key = centretable.key)
Run Code Online (Sandbox Code Playgroud)
哪个TSQL正在进行正确的反半连接,并在索引上做得很好.问题是它创建了一个要删除的东西列表,然后在执行删除时再次执行相同的检查.
我想我的问题是是否有一个按行删除,(我不会在游标中这样做,因为我知道它会有多慢),但你会认为这样的关键字会存在,我没有'虽然有幸找到了它.
如果您重复使用要删除的相同内容列表,那么您可以考虑将要删除的键插入到临时表中,然后在第二个查询中使用它。
SELECT Key, ...
INTO #ToDelete
FROM Table T
WHERE ...
Run Code Online (Sandbox Code Playgroud)
然后像这样的事情
...
LEFT OUTER JOIN #ToDelete D
ON T.Key=D.Key
WHERE D.Key IS NULL
DROP #ToDelete
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3673 次 |
| 最近记录: |