首页 > 解决方案 > 多连接查询超时问题

问题描述

我在搜索其他问题时找不到这个。我正在尝试进行一系列连接,没有什么非常复杂的。问题是我继续收到错误:

“消息 15884,级别 16,状态 1,行 110 分布式查询超时已过期。在分布式操作完成之前,超时期限已过。”

我在 Azure 上使用 SSMS。最终,我试图在数据库中获取 6 个人的所有记录。根据我完成的其他查询,它应该只返回大约 2500 条记录。问题是(我认为)我加入的观点在小端有数千条记录,在大端有数十亿条记录。我无权访问表本身,只能查看并且无法写入数据库。所以不幸的是,我不能只做一张小桌子,然后再一步合并所有东西。

到目前为止的代码如下。这可能是我尝试的第 10 次迭代。最终我放弃了条件,只输入了我想要的 PatientID。

我在做什么(或不做什么)导致这件事没有完成?

SELECT  
  Dx.ClaimId
    ,Dx.PatientId
    ,Patient.PatientGender
    ,patient.PatientBirthYear
    ,Patient.PatientZip3
    ,Dx.Npi
    ,HCP.[HCP Last Name]
    ,HCP.[HCP Specialty]
    ,HCP.[HCP Practice Location]
    ,HCP.[HCP State]
    ,HCP.POSTCODE_CD
    ,Dx.DiagnosisCode
    ,Dx.DiagnosisTypeCode
    ,Px.ProcedureCode
    ,Px.ReferringNpi
    ,HCP2.[HCP Last Name]
    ,HCP2.[HCP Specialty]
    ,HCP2.[HCP Practice Location]
    ,HCP2.[HCP State]
    ,HCP2.POSTCODE_CD

FROM  [Nimbus].[mxs].dx DX
LEFT JOIN [Nimbus].[mxs].Px PX ON Dx.ClaimId = PX.ClaimId and (DX.PatientId =106753907
OR DX.PatientId = 240884005
OR DX.PatientId = 811094164
OR DX.PatientId = 473903167
OR DX.PatientId = 1396954203
OR DX.PatientId = 879348405)
LEFT JOIN [Nimbus].[mdm].HCPInfo HCP on HCP.[HCP NPI] = Dx.Npi
LEFT JOIN [Nimbus].[mdm].HCPInfo HCP2 on HCP.[HCP NPI] = Px.ReferringNpi
LEFT JOIN [Nimbus].[mxs].Patient Patient on Patient.PatientId = Dx.PatientId and (DX.PatientId =106753907
OR DX.PatientId = 240884005
OR DX.PatientId = 811094164
OR DX.PatientId = 473903167
OR DX.PatientId = 1396954203
OR DX.PatientId = 879348405)

标签: sql-server

解决方案


推荐阅读