I have some timeout problems when executing a SELECT query.
It is SQL Server 2008 linked to an Oracle server (database AAAA, tables K and P).
The provider we are using is Microsoft OLE DB Provider for Oracle (MSDAORA).
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
If anyone has any optimization proposal for this query I would be very grateful.
The problem lies because it is fetching data from both local SQL Server and linked Oracle, but perhaps some query optimization might fix the problem.
Regards.
UPDATE:
The indexes are set OK and the amount of data in the tables is less then 100k.
I have traced the problem to dbo.AAAA_tblPosiljke that is a view on MSSQL server that is fetching data from table on Oracle. Here is the query:
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))
The portion of this query takes over 2 minutes to execute while on Oracle same query takes less then a second. Looks like a problem with fetching data. Any idea how to aproach the optimisation?
Regards.
I resolved the issue by creating the problematic tables localy. I am syncing the tables periodically and am executing them on sql sever side rather then on oracle side.