我有以下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秒内返回正确的结果。