Sql server (或者提供您想要的行为的最小子集),引擎将更优先选择散列联接,但即使如此,如果它认为有更好的方法,它仍然可以覆盖您的建议。我建议只声明变量,将count(*)移出状态,然后继续个人操作,因为与引擎作战是一场艰苦的战斗。谢谢您的建议。我把它改成了select

Sql server (或者提供您想要的行为的最小子集),引擎将更优先选择散列联接,但即使如此,如果它认为有更好的方法,它仍然可以覆盖您的建议。我建议只声明变量,将count(*)移出状态,然后继续个人操作,因为与引擎作战是一场艰苦的战斗。谢谢您的建议。我把它改成了select,sql-server,Sql Server,(或者提供您想要的行为的最小子集),引擎将更优先选择散列联接,但即使如此,如果它认为有更好的方法,它仍然可以覆盖您的建议。我建议只声明变量,将count(*)移出状态,然后继续个人操作,因为与引擎作战是一场艰苦的战斗。谢谢您的建议。我把它改成了select Count(),做了一些冥想,每次读到关于为什么你“从不”使用Count()检查存在的文章时,我都会继续争取内心的平静。我想我终于要继续了:) if ( SELECT COUNT(*) FROM Observatio


(或者提供您想要的行为的最小子集),引擎将更优先选择散列联接,但即使如此,如果它认为有更好的方法,它仍然可以覆盖您的建议。我建议只声明变量,将count(*)移出状态,然后继续个人操作,因为与引擎作战是一场艰苦的战斗。谢谢您的建议。我把它改成了select Count(),做了一些冥想,每次读到关于为什么你“从不”使用Count()检查存在的文章时,我都会继续争取内心的平静。我想我终于要继续了:)
if (
  SELECT COUNT(*)       
    FROM ObservationOrganism  omo
    JOIN Observation          om  ON  om.ObservationID  = omo.ObservationMicID
    JOIN Organism             o   ON  o.OrganismID      = omo.OrganismID
    JOIN ObservationMicDrug   omd ON  omd.ObservationOrganismID = omo.ObservationOrganismID
    JOIN SIRN                 srn ON  srn.SIRNID        = omd.SIRNID
    JOIN OrganismDrug         od  ON  od.OrganismDrugID = omd.OrganismDrugID
  WHERE
    om.StatusCode IN ('F', 'C')
    AND o.OrganismGroupID <> -1
    AND od.OrganismDrugGroupID <> -1
    AND (om.LabType <> 'screen' OR om.LabType IS NULL)) > 0

print 'records';       
IF (EXISTS(
  SELECT *       
    FROM ObservationOrganism  omo
    JOIN Observation          om  ON  om.ObservationID  = omo.ObservationMicID
    JOIN Organism             o   ON  o.OrganismID      = omo.OrganismID
    JOIN ObservationMicDrug   omd ON  omd.ObservationOrganismID = omo.ObservationOrganismID
    JOIN SIRN                 srn ON  srn.SIRNID        = omd.SIRNID
    JOIN OrganismDrug         od  ON  od.OrganismDrugID = omd.OrganismDrugID
  WHERE
    om.StatusCode IN ('F', 'C')
    AND o.OrganismGroupID <> -1
    AND od.OrganismDrugGroupID <> -1
    AND (om.LabType <> 'screen' OR om.LabType IS NULL))

print 'records'
Declare @recordCount INT;
SELECT @recordCount = COUNT(*)       
    FROM ObservationOrganism  omo
    JOIN Observation          om  ON  om.ObservationID  = omo.ObservationMicID
    JOIN Organism             o   ON  o.OrganismID      = omo.OrganismID
    JOIN ObservationMicDrug   omd ON  omd.ObservationOrganismID = omo.ObservationOrganismID
    JOIN SIRN                 srn ON  srn.SIRNID        = omd.SIRNID
    JOIN OrganismDrug         od  ON  od.OrganismDrugID = omd.OrganismDrugID
  WHERE
    om.StatusCode IN ('F', 'C')
    AND o.OrganismGroupID <> -1
    AND od.OrganismDrugGroupID <> -1
    AND (om.LabType <> 'screen' OR om.LabType IS NULL);

IF(@recordCount > 0)
  print 'records';