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



这是我的查询。在我评论部分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')

试图让它简短:

当我执行此查询时,完成其执行需要太多时间。在我评论"OR"检查后,没有缓慢。查询中提到的"IN_CTD"表包含2830539条记录,表"IN_CTC"包含 1965 条记录。如何修改此查询,包括"OR"检查,使其不会花费太多时间来执行?

也许你可以尝试子查询。如果 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')

希望它能有所帮助。

最新更新