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



我有以下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

2xreplace语句是因为两个表之间可能出现两个不同的前缀:

表1:

UUID0000000000165019

表2:

i00165019

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

提前感谢

好的,感谢那些回应的人,因为这对指出慢区很有用。

我设法用linqpad将其转移到linq并进行重构,现在它在15秒内返回正确的结果。

最新更新