gpt4 book ai didi

sql - 在此 SQL 查询中进行多连接的更好方法?

转载 作者:行者123 更新时间:2023-12-04 21:51:11 25 4
gpt4 key购买 nike

我正在尝试从表 (a.table) 中提取数据以连接到另一个表 (b.table)。为此,我需要加入第三个表 (c.table) 以在表 Plan_Code 和 Policy_Riders 之间进行引用。请看下面的代码

USE [CDS]
GO

SELECT riders.ExpiryDt--
,riders.TerminationDt
,[ModalPremium]--
,plan_code
FROM a.table as riders

JOIN c.table as policy
ON policy.Policy_Num = riders.Policy_Num


JOIN b.table AS plan_code
on policy.Plan_Code_ID = plan_code.Plan_Code_ID

WHERE plan_code.Plan_Code LIKE '%EIUL3%'
OR plan_code.Plan_Code LIKE '%LBIUL%'
OR plan_code.Plan_Code LIKE '%MEIUL3%'
GO

为了将字段名称 Plan_code 从 b.table 获取到我的输出,我需要首先将 a.table 连接到 c.table,然后将 c.table 连接到 b.table。我的问题是是否有更好的方法来处理此查询以更好地连接三个表?任何帮助,将不胜感激。谢谢!

最佳答案

首先,为过滤器使用派生表:

...
JOIN (SELECT columns
FROM b.table
WHERE Plan_Code LIKE '%EIUL3%'
OR Plan_Code LIKE '%LBIUL%'
OR Plan_Code LIKE '%MEIUL3%'
) AS plan_code ON policy.Plan_Code_ID = plan_code.Plan_Code_ID

这通常会确保这些过滤器适用于最小的数据集,而不是在连接所有表之后。另一种选择是使上面的临时表成为临时表,然后加入它。相同的概念,只是帮助优化器高效工作。在较小的查询中,您不会看到任何差异,但在较大的查询中(尤其是像这样的查询,具有来自单个表的许多过滤器),它将是白天和黑夜。

其次,你的过滤器特别。使用带有前后通配符 %ex%LIKE 并不好。它将无法使用索引。如果可能,使用一个 ex% 或另一个 %ex

除此之外,您的联接没有问题,并且是从每个表中获取列的正确方法。

关于sql - 在此 SQL 查询中进行多连接的更好方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44552555/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com