我在一个巨大的SQL Server表上有一个性能问题。我们有这个疑问:SQL Server查询性能替代(在LIKE状态员中连接字符串)
条件后SELECT cycle
FROM product AS pr
INNER JOIN productdetails AS prd
ON prd.label = 'XRT354511'
AND (pr.cycle = prd.cycle OR prd.cycle LIKE pr.cycle+ '-EXECUTED%')
OR语句使用喜欢来连接与-EXECUTED产品表周期(我们不关心周期“-EXECUTED”的位置,我们只需要知道,如果循环包含-EXECUTED)。
然后,我的建议来解决这个问题是改变这个一个查询:
SELECT cycle
FROM product AS pr
INNER JOIN productdetails AS prd
ON prd.label = 'XRT354511'
AND (pr.cycle = prd.cycle
OR (pr.cycle = prd.cycle AND pr.cycle LIKE '-EXECUTED%'))
当我执行的第二个查询,它运行非常快,平稳。
我的建议是否有效?我可以使用我的建议并获得与第一个查询相同的结果吗?
感谢
逻辑在我看来不同。也许你应该包含一些实际的数据,这样我们可以看到如何改进第一个查询。如果第二个查询返回相同的结果并且性能更好,那么当然使用它。 –
这些查询将返回两个不同的结果 –
您确定查询返回相同的结果集吗?我会非常小心括号和AND/OR运算符。 –