在WHERE子句中包含OR检查后,SQL查询运行缓慢

时间:2018-03-12 05:13:52

标签: sql sql-server ssms-2012

这是我的查询。在我评论部分OR(NITransactionStatus =' SUCCESS')后,没有缓慢。  我如何修改此查询,以便没有慢,我还需要包括内部条件' WHERE'条款?

SELECT COUNT(*) 
FROM IN_CTD D 
INNER JOIN IN_CTC C 
ON C.InwardCustFileId = D.InwardCustFileId 
WHERE (D.CurrentStatusId = 30) OR (NITransactionStatus = 'SUCCESS')

试着简短说明:

当我执行此查询时,完成执行需要花费太多时间。在我评论了“或”之后检查,没有缓慢。' IN_CTD'查询中提到的表包含2830539条记录和表格' IN_CTC'有1965条记录。如何修改此查询,包括“或”'检查是否会花费很多时间来执行?

1 个答案:

答案 0 :(得分:-1)

也许你可以尝试子查询。如果NITransactionStatus列在IN_CTD表上,请尝试:

SELECT COUNT(*) 
FROM IN_CTC C 
INNER JOIN (SELECT InwardCustFileId FROM IN_CTD WHERE (CurrentStatusId = 30) OR (NITransactionStatus = 'SUCCESS')) AS D
ON C.InwardCustFileId = D.InwardCustFileId

如果NITransactionStatus列在IN_CTC表上,请尝试:

SELECT COUNT(*) 
FROM IN_CTC C 
INNER JOIN (SELECT InwardCustFileId FROM IN_CTD WHERE CurrentStatusId = 30) AS D
ON C.InwardCustFileId = D.InwardCustFileId 
WHERE (NITransactionStatus = 'SUCCESS')

希望它可以提供帮助。