Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Oracle 选择查询超时_Oracle_Sql Server 2008_Select_Timeout - Fatal编程技术网

Oracle 选择查询超时

Oracle 选择查询超时,oracle,sql-server-2008,select,timeout,Oracle,Sql Server 2008,Select,Timeout,我在执行SELECT查询时遇到一些超时问题 它是SQL Server 2008,链接到Oracle Server数据库AAAA、表K和表p。 我们使用的提供程序是针对Oracle MSDAORA的Microsoft OLE DB提供程序 SELECT I.DOF AS Id, I.DokumentDatumDokumenta, I.DokumentaDatumPrejetja, I.PartnerID, I.PartnerNaziv, I.PartnerNaslov,

我在执行SELECT查询时遇到一些超时问题

它是SQL Server 2008,链接到Oracle Server数据库AAAA、表K和表p。 我们使用的提供程序是针对Oracle MSDAORA的Microsoft OLE DB提供程序

SELECT     
    I.DOF AS Id, I.DokumentDatumDokumenta, I.DokumentaDatumPrejetja, 
    I.PartnerID, I.PartnerNaziv, I.PartnerNaslov, I.PartnerIdentifikacijskaStevilka, 
    I.PartnerPostnaStevilka, I.PartnerKraj, I.PartnerDrzava,   
    I.PrejemnikInternoPodjetjeId, I.PrejemnikInternoPodjetje,   
    I.PrejemnikOrganizacijskaSkupinaId, 
    I.PrejemnikOrganizacijskaSkupina, I.PrejemnikZaposleni, I.DokumentEksternaOznaka, 
    I.DokumentVrstaDokumenta, I.DokumentZadeva, 
    I.ProcesOpravilo, I.PrejemnikVSkupiniId, I.PrejemnikVSkupiniNaziv, 
    I.PrejmnikVSkupiniWorkflowId, D.Path AS EDokumentPath, I.SkeniranjeUporabnik, 
    I.SkeniranjeTime, I.ReleaseTime, I.WorkflowName, I.NadzornikRacunaId, 
    I.NadzornikRacunaNaziv, I.NadzornikRacunaWorkflowId, I.Znesek, 
    K.SIF_VAL AS Valuta, D.ZagnanProcesTime, I.DatumValute, I.StevilkaNarocila, 
    I.DUR, D.DocId, P.ZNESEK AS ZnesekVeur
FROM         
    dbo.tblAscentIndex AS I 
INNER JOIN
    dbo.tblAscentDoc AS D ON D.DocId = I.DocId 
INNER JOIN
    dbo.AAAA_tblPosiljke AS K ON I.DOF = K.DOF 
INNER JOIN
    OPENQUERY(AAAA, 'SELECT DOF,ZNESEK FROM KDF_INPUT_POD') AS P ON P.DOF = I.DOF
如果有人对此查询有任何优化建议,我将非常感激

问题在于,它同时从本地SQL Server和链接的Oracle中获取数据,但也许一些查询优化可以解决这个问题

问候

更新:

索引设置为OK,表中的数据量小于100k。 我已经将问题追溯到dbo.AAAA_tblPosiljke,它是MSSQL服务器上的一个视图,正在从Oracle上的表中获取数据。以下是查询:

SELECT     ID_KIP AS ID_CDS, STATUS, DOF, ST_DOK AS ST_DOKUMENTA, SIF_OE, SIF_PP, IDENTIF_ST_OE, IDENTIF_ST_PP, DAT_DOSPETJA, DAT_DUR, 
                      SIF_VAL, ZNESEK_VAL, OPIS, VR_PREDMETA, PODPISNIK AS SIF_PODPISNIKA, REFERENT AS SIF_REFERENTA, DAT_FAKTURE, ST_NAROCILA, 
                      DAT_ZAPADLOSTI, APLIKACIJA, DAT_OBDOBJA, DAT_ECL, ST_ECL, CAR_POSTOPEK, MODEL, SKLIC, VRSTA_TRR, VEZA_URL, 
                      KPA_STATUS_PRENOSA, KPA_NAPAKA, UPORABNIK, ID_ARH, VK_PGD, ID_PGD, PROJEKT
FROM         OPENQUERY(AAAA, 'SELECT * FROM KDF_INPUT_POD WHERE STATUS NOT IN (9)') AS derivedtbl_1
WHERE     (DAT_DOSPETJA > CONVERT(DATETIME, '2012-03-01 00:00:00', 102))
此查询部分的执行时间超过2分钟,而在Oracle上执行同一查询所需时间少于1秒钟。看起来是提取数据的问题。你知道如何进行优化吗


注意。

我通过在本地创建有问题的表解决了这个问题。我定期同步这些表,并在sql服务器端而不是oracle端执行它们

请编辑您的帖子并添加所有相关表上存在的索引、每个表中的行数以及上面SQL生成的当前查询执行计划。谢谢。至少可以说,我在Oracle链接服务器方面的运气是“好坏参半”。您是否尝试将内部连接KOPA..SCHEMA_NAME.KDF_INPUT_POD改为P?您可能希望尝试Oracle的OLE DB提供程序,而不是Microsoft的,它在某些情况下性能更好。尽管说实话,我发现使用Oracle linked server更多的是尝试和错误,而不是精确的科学。谢谢您的帮助。BOn Jarvis:我确信问题出在MSSQL链接的Oracle上,而不是索引/记录金额。Pondlife:如果更改为oracle提供程序不起作用,我还有什么其他选择?