【发布时间】:2019-07-17 16:17:55
【问题描述】:
我有一个父表:OBSTACLES 和一个子表 AREA 2
CREATE TABLE [dbo].[OBSTACLES] (
[ob_fid] INT NOT NULL IDENTITY(1, 1) PRIMARY KEY,
[RECORD_IDENTIFIER] INT,
[aero_surv_fid] INT
);
CREATE TABLE [dbo].[AREA 2] (
[a2_fid] INT NOT NULL IDENTITY(1, 1) PRIMARY KEY,
[ob_fid] INT FOREIGN KEY REFERENCES [dbo].[OBSTACLES]([ob_fid]) ON UPDATE AND DELETE CASCADE
);
我有一个双值数据源,它与 [dbo].[OBSTACLES] 中的 [RECORD_IDENTIFIER] 和 [aero_surv_fid] 值之一匹配。
我希望使用来自其父级的相应 [ob_fid] 填充 [dbo].[AREA 2]。
为了澄清,我从两个非唯一值开始,然后找到对应的唯一值,并将其插入到子表中。
我一直在用这个SQL在子表中插入一行数据:
DECLARE @ob_fid INT
SET @ob_fid = (SELECT [ob_fid] FROM [dbo].[OBSTACLES] where [RECORD_IDENTIFIER] = 1021 AND [aero_surv_fid] = 2)
IF @ob_fid IS NOT NULL INSERT INTO [dbo].[AREA 2] ([ob_fid]) VALUES (@ob_fid)
虽然这确实会产生结果,但需要很长时间。尤其是在做 1000 次时。使用父/子关系而不是逻辑是否有更好的查询?
谢谢。
【问题讨论】:
标签: sql sql-server