【发布时间】:2019-04-16 22:53:01
【问题描述】:
我有以下表结构:
用户
- UserId(主键)
- 用户名
一些物品
- SomeId(FK 到 Users.UserId)
- SomeItemId(主键)
- 姓名
- 其他东西...
一些其他项目
- SomeId2(FK 到 Users.UserId)
- SomeOtherItemId(主键)
- 姓名
- 其他东西...
我想从 Users 表中删除 SomeItems 和 SomeOtherItems 表中不存在的记录。
我可以这样做:
DELETE from Users
FROM Users u
WHERE u.UserId NOT IN
(SELECT DISTINCT SomeId FROM SomeItems
UNION
SELECT DISTINCT SomeId2 FROM SomeOtherItems)
但是,它非常慢。我假设它对每条记录执行 UNION 查询,不是吗?有什么方法可以提高性能?
【问题讨论】:
标签: sql sql-server tsql