MS SQL Server 关联查询语句优化

满庭花醉三千客 满庭花醉三千客 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
表之间存在关联'关联编号',三张表每张表数据量均为100万左右

1、Name当表2存在数据时取表2否则取表1;
2、BillNo当表3存在数据时取表3,当表2存在数据时取表2,最后才考虑表1;
除了索引优化之外,还有什么更好的优化方案(临时表、UNION ALL)?

简化例子如下(实际查询字段更多、关联表更多):

SELECT Id,关联编号,Name,BillNo FROM table1
SELECT Id,关联编号,Name,BillNo FROM table2
SELECT Id,关联编号,Name,BillNo FROM table3

SELECT *
FROM ( SELECT a.Id ,
( CASE WHEN b.Id IS NULL THEN a.Name
ELSE b.Name
END ) AS Name ,
( CASE WHEN c.Id IS NOT NULL THEN c.BillNo
WHEN b.Id IS NOT NULL THEN b.BillNo
ELSE a.BillNo
END ) AS BillNo
FROM table1 a
LEFT JOIN table2 b ON a.关联编号 = b.关联编号
LEFT JOIN table3 b ON a.关联编号 = c.关联编号
) t
WHERE t.BillNo = @BillNo
AND t.Name = @Name;
...全文

相关推荐

评论 4
收藏 已收藏
分享
返回顶部