【发布时间】:2017-11-13 16:39:48
【问题描述】:
我想解决以下查询的一些性能问题。
- Tbl_A 有 6500 万行
- Tbl_B 有 2 行
我需要用 Tbl_b 的值过滤 Tbl_A
SELECT COUNT(*)
FROM Tbl_A R1 WITH (NOLOCK)
INNER JOIN Tbl_B PBD
ON PBD.Indicators = CASE R1.Indicator WHEN 'Y' THEN 'B'
WHEN 'N' THEN 'D'
WHEN '1' THEN 'B'
WHEN '0' THEN 'D'
ELSE R1.Indicator
END
我曾尝试使用 in & exists 而不是 join,但我找不到任何性能优势。请帮忙。
【问题讨论】:
-
可能不是性能改进,而是查询改进,您可以将
WHEN组合为WHEN 'Y' OR '1' THEN 'B'WHEN 'N' OR '0' THEN 'D' -
不,它不工作
-
我想这是一个 n:m 关系?我可以在 tbl_a 中多次找到相同的指标,在 tbl_b 中多次找到相同的指标?
-
tbl_a 重复且 tbl_b 不同
-
只有 2 行?是错字吗?
标签: sql performance sql-server-2014 sqlperformance sql-tuning