【发布时间】:2019-10-17 11:52:03
【问题描述】:
我有 3 个单独的查询,当我通过左连接合并它们时,性能下降很大
任何想法为什么会发生或如何解决这个问题?
这里是查询
第一次查询
SELECT MONEY,
AccountLevel,
BadgeCount,
EloWin,
TournamentOfficBattleTotal,
MaximumTowerLevel,
NpcBattleVictoryCount
FROM table_2
WHERE table_2.UserId = 465903
第二次查询
SELECT COUNT(DISTINCT table_1.PokemonId) AS PokedexOwnage
FROM table_1 WHERE UserId = 465903
第三次查询
SELECT COUNT(*) AS PokedexEvent
FROM table_3 WHERE UserId = 465903
这是我将所有 3 个合并为一个的解决方案
SELECT MONEY,
AccountLevel,
BadgeCount,
COUNT(DISTINCT table_1.PokemonId) AS PokedexOwnage,
COUNT(DISTINCT table_3.PokemonId) AS PokedexEvent,
EloWin,
TournamentOfficBattleTotal,
MaximumTowerLevel,
NpcBattleVictoryCount
FROM table_2
LEFT JOIN table_1 ON table_1.UserId = table_2.UserId
LEFT JOIN table_3 ON table_3.UserId = table_2.UserId
WHERE table_2.UserId = 465903
GROUP BY AccountLevel,
BadgeCount,
EloWin,
TournamentOfficBattleTotal,
MaximumTowerLevel,
NpcBattleVictoryCount,
MONEY
当我通过执行计划进行比较时,前 3 个查询与最后一个查询的相对成本为 0%
【问题讨论】:
-
如果您提供查询计划,Paste the Plan 是一种比图像更好的方法。特别是当我们无法检查这些图像并且图像没有提供完整的计划时。 ??????
标签: sql tsql left-join query-performance sql-server-2017