【发布时间】:2014-09-08 06:02:43
【问题描述】:
我有这个 annidate 查询:
SELECT [U_ProdId], [U_CompDesc]
FROM [dbo].[@BE_CMPNTS]
WHERE [U_CompId] IN (
SELECT DISTINCT [U_CompId]
FROM [dbo].[@BE_CHARS] Carat JOIN [dbo].[@BE_CHARVL] CarVal ON Carat.U_CharValueId = CarVal.Code
WHERE CarVal.Name LIKE '%Manico%'
) AND [U_CompId] IN (
SELECT DISTINCT [U_CompId]
FROM [dbo].[@BE_CHARS] Carat JOIN [dbo].[@BE_CHARVL] CarVal ON Carat.U_CharValueId = CarVal.Code
WHERE CarVal.Name LIKE '%Nero%'
) AND [U_CompId] IN (
SELECT DISTINCT [U_CompId]
FROM [dbo].[@BE_CHARS] Carat JOIN [dbo].[@BE_CHARVL] CarVal ON Carat.U_CharValueId = CarVal.Code
WHERE CarVal.Name LIKE '%Pelle%'
)
出于可扩展性目的,我会优化此查询。
如果我有少量 Carval.Name 选项,则 annidate 查询很快。但是,如果我有越来越多的选项可以附加到查询中,我的计算成本就会非常高。
如果有办法,我该如何优化这个 annidate 查询?我必须使用一些加入?如何?谢谢。
【问题讨论】:
标签: sql sql-server join query-optimization scalability