大型数据库上的慢速SQL查询

大型数据库上的慢速SQL查询,sql,sql-server,Sql,Sql Server,我使用下面的SQL查询来查找另一个表中不存在的数据,并且由于替换序列,它需要35分钟才能完成 DECLARE @p0 NVarChar(4) = 'UUID' DECLARE @p1 NVarChar(1) = '' DECLARE @p2 NVarChar(1) = 'p' DECLARE @p3 NVarChar(1) = '' DECLARE @p4 NVarChar(4) = 'UUID' DECLARE @p5 NVarChar(1) = '' DECLARE @p6 NVarChar

我使用下面的SQL查询来查找另一个表中不存在的数据,并且由于替换序列,它需要35分钟才能完成

DECLARE @p0 NVarChar(4) = 'UUID'
DECLARE @p1 NVarChar(1) = ''
DECLARE @p2 NVarChar(1) = 'p'
DECLARE @p3 NVarChar(1) = ''
DECLARE @p4 NVarChar(4) = 'UUID'
DECLARE @p5 NVarChar(1) = ''
DECLARE @p6 NVarChar(1) = 'p'
DECLARE @p7 NVarChar(1) = ''

SELECT 
    u.ProductUUID, u.id, c.id, c.MappingUUID
FROM 
    dbo.Product_Data u
LEFT OUTER JOIN 
    dbo.Mapping_Data c ON REPLACE(REPLACE(c.MappingUUID, @p0, @p1), @p2, @p3) = REPLACE(REPLACE(u.ProductUUID, @p4, @p5), @p6, @p7)
WHERE 
    c.GN_Paid IS NULL
2x
replace
语句是由于两个表之间可能出现两个不同的前缀:

表1:

UUID0000000000165019
表2:

i00165019
虽然它们以相同的id结束,但我正在考虑替换开头并返回结果,但这似乎效率低下,所以想知道你们中是否有大师处理过这个问题并使用了不同的方法


提前非常感谢

好的,感谢那些回复的人,因为这有助于指出缓慢的领域


我用linqpad和refactor成功地将这一点转移到linq,现在它可以在15秒内返回正确的结果。

ON
子句中的
REPLACE()。我建议您修复
JOIN
键,然后再试一次。我同意@GordonLinoff。您正在强制引擎根据表
c
的所有记录计算表
u
的所有记录,这是大量的操作似乎一个
联合
可以解决这个问题。谢谢大家,让我来研究一下,并尝试重构