Query performance when using VALUES goes from 30 ms to > 5 minutes

Hi,

I’m running a lot of queries to extract data from stardog into elasticsearch with construct queries. I thought I would reduce the number of queries by doing a query with VALUES instead.

Now the query is selecting close to the entire database and timing out.

Here is the query (notice the two values at the bottom):

CONSTRUCT {
?id a <http://www.arkivverket.no/standarder/noark5/arkivstruktur/Journalpost> ;
   arkiv:offentligTittel ?offentligTittel;
   arkiv:offentligTittel_SENSITIV ?offentligTittel_SENSITIV;
   arkiv:parent ?parent.
   ?id arkiv:dokumentbeskrivelse ?dokumentbeskrivelse.
   ?dokumentbeskrivelse a arkiv:Dokumentbeskrivelse;
       arkiv:tittel ?dok_tittel;
       arkiv:tittel_SENSITIV ?dok_tittel_SENSITIV.
           ?dokumentbeskrivelse arkiv:dokumentobjekt ?dokobjekt.
   ?dokobjekt a arkiv:Dokumentobjekt.
   ?dokobjekt arkiv:referanseDokumentfil ?referanseDokumentfil.
    ?id arkiv:korrespondansepart ?korrespondansepart.

       ?korrespondansepart a arkiv:Korrespondansepart.

       ?korrespondansepart arkiv:korrespondansepartNavn ?korrespondansepartNavn.
       ?korrespondansepart arkiv:korrespondansepartNavn_SENSITIV ?korrespondansepartNavn_SENSITIV.
       ?korrespondansepart arkiv:korrespondanseparttype ?korrespondanseparttype.
?id arkiv:arkivertDato ?arkivertDato.
?id arkiv:forfatter ?forfatter.
?id arkiv:journalpostnummer ?journalpostnummer.
?id arkiv:journalstatus ?journalstatus.
?korrespondansepart arkiv:postadresse ?korrespondansepart_postadresse.
?id arkiv:noekkelord ?noekkelord.
?id arkiv:opprettetAv ?opprettetAv.
?id arkiv:opprettetDato ?opprettetDato.
?id arkiv:publisertDato ?publisertDato.
?id arkiv:journaldato ?journaldato.
    ?id arkiv:arkivskaper ?arkivskaper.

    ?id  arkiv:arkivskaperTransitive  ?arkivskaperTransitive.

} WHERE {

{

?id a <http://www.arkivverket.no/standarder/noark5/arkivstruktur/Journalpost> ;
   arkiv:offentligTittel ?offentligTittel;
   arkiv:offentligTittel_SENSITIV ?offentligTittel_SENSITIV;
   arkiv:parent ?parent;
.
OPTIONAL{?id arkiv:arkivertDato ?arkivertDato.}
OPTIONAL{?id arkiv:forfatter ?forfatter.}
OPTIONAL{?id arkiv:journalpostnummer ?journalpostnummer.}
OPTIONAL{?id arkiv:journalstatus ?journalstatus.}
OPTIONAL{?id arkiv:noekkelord ?noekkelord.}

OPTIONAL{?id arkiv:opprettetAv ?opprettetAv.}
OPTIONAL{?id arkiv:opprettetDato ?opprettetDato.}
OPTIONAL{?id arkiv:publisertDato ?publisertDato.}
OPTIONAL{?id arkiv:journaldato ?journaldato.}

} union {
    ?id arkiv:dokumentbeskrivelse ?dokumentbeskrivelse.
    ?dokumentbeskrivelse arkiv:tittel ?dok_tittel;
        arkiv:tittel_SENSITIV ?dok_tittel_SENSITIV.
} union {
    ?id arkiv:dokumentbeskrivelse ?dokumentbeskrivelse.

    ?dokumentbeskrivelse arkiv:tittel ?dok_tittel;
        arkiv:tittel_SENSITIV ?dok_tittel_SENSITIV.

    ?dokumentbeskrivelse arkiv:dokumentobjekt ?dokobjekt.
    ?dokobjekt arkiv:referanseDokumentfil ?referanseDokumentfil.
} union {

    ?id arkiv:korrespondansepart ?korrespondansepart.

    ?korrespondansepart arkiv:korrespondansepartNavn ?korrespondansepartNavn.
    ?korrespondansepart arkiv:korrespondansepartNavn_SENSITIV ?korrespondansepartNavn_SENSITIV.
    ?korrespondansepart arkiv:korrespondanseparttype ?korrespondanseparttype.
    OPTIONAL{?korrespondansepart arkiv:postadresse ?korrespondansepart_postadresse.}


} union {

    ?id arkiv:parent+ /arkiv:arkivskaper ?arkivskaper

} union {

      ?id arkiv:parent+ /arkiv:arkivskaper ?arkivskaper.
      ?arkivskaper <http://data.einnsyn.no/virksomhetmeta/parent>* ?arkivskaperTransitive.

}

}

VALUES (?id) {
  
(<http://difi.oep.dump/journalpost/14084516>)
(<http://difi.oep.dump/journalpost/14084517>)

}

This turns into

## TWO VALUES
From all
Reduced [cardinality=25.4M]
  Projection(?id AS ?subject, ?fbztwsbw AS ?predicate, ?docvnron AS ?object;
            ?id AS ?subject, ?lpnzunou AS ?predicate, ?offentligTittel AS ?object;
            ?id AS ?subject, ?jiwdmasn AS ?predicate, ?offentligTittel_SENSITIV AS ?object;
            ?id AS ?subject, ?rupgujnj AS ?predicate, ?parent AS ?object;
            ?id AS ?subject, ?auxcmrar AS ?predicate, ?dokumentbeskrivelse AS ?object;
            ?dokumentbeskrivelse AS ?subject, ?fbztwsbw AS ?predicate, ?kklizzkx AS ?object;
            ?dokumentbeskrivelse AS ?subject, ?lvmaqyxy AS ?predicate, ?dok_tittel AS ?object;
            ?dokumentbeskrivelse AS ?subject, ?yczljsvs AS ?predicate, ?dok_tittel_SENSITIV AS ?object;
            ?dokumentbeskrivelse AS ?subject, ?ylllxgak AS ?predicate, ?dokobjekt AS ?object;
            ?dokobjekt AS ?subject, ?fbztwsbw AS ?predicate, ?fchqucho AS ?object;
            ?dokobjekt AS ?subject, ?boirmjwz AS ?predicate, ?referanseDokumentfil AS ?object;
            ?id AS ?subject, ?wnooevmr AS ?predicate, ?korrespondansepart AS ?object;
            ?korrespondansepart AS ?subject, ?fbztwsbw AS ?predicate, ?jnffxset AS ?object;
            ?korrespondansepart AS ?subject, ?jaikkowy AS ?predicate, ?korrespondansepartNavn AS ?object;
            ?korrespondansepart AS ?subject, ?hatcljpl AS ?predicate, ?korrespondansepartNavn_SENSITIV AS ?object;
            ?korrespondansepart AS ?subject, ?aykdvugo AS ?predicate, ?korrespondanseparttype AS ?object;
            ?id AS ?subject, ?glpwnnkl AS ?predicate, ?arkivertDato AS ?object;
            ?id AS ?subject, ?uljioykh AS ?predicate, ?forfatter AS ?object;
            ?id AS ?subject, ?syqbmkmz AS ?predicate, ?journalpostnummer AS ?object;
            ?id AS ?subject, ?gcqdvtjx AS ?predicate, ?journalstatus AS ?object;
            ?korrespondansepart AS ?subject, ?rupdudfd AS ?predicate, ?korrespondansepart_postadresse AS ?object;
            ?id AS ?subject, ?ntqxrfqh AS ?predicate, ?noekkelord AS ?object;
            ?id AS ?subject, ?dmrmpqar AS ?predicate, ?opprettetAv AS ?object;
            ?id AS ?subject, ?covhsixy AS ?predicate, ?opprettetDato AS ?object;
            ?id AS ?subject, ?zqeizelm AS ?predicate, ?publisertDato AS ?object;
            ?id AS ?subject, ?jlbfejjx AS ?predicate, ?journaldato AS ?object;
            ?id AS ?subject, ?yxyxpbff AS ?predicate, ?arkivskaper AS ?object;
            ?id AS ?subject, ?nhlwfcus AS ?predicate, ?arkivskaperTransitive AS ?object) [cardinality=25.4M]
    Bind((<http://www.arkivverket.no/standarder/noark5/arkivstruktur/publisertDato> AS ?zqeizelm) (<http://www.arkivverket.no/standarder/noark5/arkivstruktur/parent> AS ?rupgujnj) (<http://www.arkivverket.no/standarder/noark5/arkivstruktur/opprettetAv> AS ?dmrmpqar) (<http://www.arkivverket.no/standarder/noark5/arkivstruktur/referanseDokumentfil> AS ?boirmjwz) (<http://www.arkivverket.no/standarder/noark5/arkivstruktur/korrespondansepartNavn_SENSITIV> AS ?hatcljpl) (<http://www.arkivverket.no/standarder/noark5/arkivstruktur/dokumentobjekt> AS ?ylllxgak) (<http://www.arkivverket.no/standarder/noark5/arkivstruktur/korrespondansepart> AS ?wnooevmr) (<http://www.arkivverket.no/standarder/noark5/arkivstruktur/Korrespondansepart> AS ?jnffxset) (<http://www.arkivverket.no/standarder/noark5/arkivstruktur/journaldato> AS ?jlbfejjx) (<http://www.arkivverket.no/standarder/noark5/arkivstruktur/Journalpost> AS ?docvnron) (<http://www.arkivverket.no/standarder/noark5/arkivstruktur/tittel> AS ?lvmaqyxy) (<http://www.arkivverket.no/standarder/noark5/arkivstruktur/Dokumentbeskrivelse> AS ?kklizzkx) (<http://www.arkivverket.no/standarder/noark5/arkivstruktur/arkivertDato> AS ?glpwnnkl) (<http://www.arkivverket.no/standarder/noark5/arkivstruktur/journalpostnummer> AS ?syqbmkmz) (<http://www.arkivverket.no/standarder/noark5/arkivstruktur/Dokumentobjekt> AS ?fchqucho) (<http://www.arkivverket.no/standarder/noark5/arkivstruktur/journalstatus> AS ?gcqdvtjx) (<http://www.arkivverket.no/standarder/noark5/arkivstruktur/arkivskaperTransitive> AS ?nhlwfcus) (<http://www.arkivverket.no/standarder/noark5/arkivstruktur/offentligTittel> AS ?lpnzunou) (<http://www.arkivverket.no/standarder/noark5/arkivstruktur/korrespondansepartNavn> AS ?jaikkowy) (<http://www.arkivverket.no/standarder/noark5/arkivstruktur/forfatter> AS ?uljioykh) (<http://www.arkivverket.no/standarder/noark5/arkivstruktur/arkivskaper> AS ?yxyxpbff) (rdf:type AS ?fbztwsbw) (<http://www.arkivverket.no/standarder/noark5/arkivstruktur/korrespondanseparttype> AS ?aykdvugo) (<http://www.arkivverket.no/standarder/noark5/arkivstruktur/tittel_SENSITIV> AS ?yczljsvs) (<http://www.arkivverket.no/standarder/noark5/arkivstruktur/opprettetDato> AS ?covhsixy) (<http://www.arkivverket.no/standarder/noark5/arkivstruktur/dokumentbeskrivelse> AS ?auxcmrar) (<http://www.arkivverket.no/standarder/noark5/arkivstruktur/noekkelord> AS ?ntqxrfqh) (<http://www.arkivverket.no/standarder/noark5/arkivstruktur/offentligTittel_SENSITIV> AS ?jiwdmasn) (<http://www.arkivverket.no/standarder/noark5/arkivstruktur/postadresse> AS ?rupdudfd)) [cardinality=25.4M]
      HashJoin[?id] [cardinality=25.4M]
        Union [cardinality=27.6M]
          MergeJoinOuter[?id] [cardinality=1.9M]
            MergeJoinOuter[?id] [cardinality=1.9M]
              MergeJoinOuter[?id] [cardinality=1.9M]
                MergeJoinOuter[?id] [cardinality=1.9M]
                  MergeJoinOuter[?id] [cardinality=1.9M]
                    MergeJoinOuter[?id] [cardinality=1.9M]
                      MergeJoinOuter[?id] [cardinality=1.9M]
                        MergeJoinOuter[?id] [cardinality=1.9M]
                          MergeJoinOuter[?id] [cardinality=1.9M]
                            MergeJoin[?id] [cardinality=1.9M]
                              Scan[PSOC](?id, <http://www.arkivverket.no/standarder/noark5/arkivstruktur/offentligTittel_SENSITIV>, ?offentligTittel_SENSITIV) [cardinality=5.7M]
                              MergeJoin[?id] [cardinality=1.9M]
                                Scan[PSOC](?id, <http://www.arkivverket.no/standarder/noark5/arkivstruktur/offentligTittel>, ?offentligTittel) [cardinality=5.7M]
                                MergeJoin[?id] [cardinality=1.9M]
                                  Scan[PSOC](?id, <http://www.arkivverket.no/standarder/noark5/arkivstruktur/parent>, ?parent) [cardinality=5.7M]
                                  Scan[POSC](?id, rdf:type, <http://www.arkivverket.no/standarder/noark5/arkivstruktur/Journalpost>) [cardinality=1.9M]
                            Scan[PSOC](?id, <http://www.arkivverket.no/standarder/noark5/arkivstruktur/arkivertDato>, ?arkivertDato) [cardinality=154K]
                          Scan[PSOC](?id, <http://www.arkivverket.no/standarder/noark5/arkivstruktur/forfatter>, ?forfatter) [cardinality=0]
                        Scan[PSOC](?id, <http://www.arkivverket.no/standarder/noark5/arkivstruktur/journalpostnummer>, ?journalpostnummer) [cardinality=1.9M]
                      Scan[PSOC](?id, <http://www.arkivverket.no/standarder/noark5/arkivstruktur/journalstatus>, ?journalstatus) [cardinality=73K]
                    Scan[PSOC](?id, <http://www.arkivverket.no/standarder/noark5/arkivstruktur/noekkelord>, ?noekkelord) [cardinality=0]
                  Scan[PSOC](?id, <http://www.arkivverket.no/standarder/noark5/arkivstruktur/opprettetAv>, ?opprettetAv) [cardinality=618K]
                Scan[PSOC](?id, <http://www.arkivverket.no/standarder/noark5/arkivstruktur/opprettetDato>, ?opprettetDato) [cardinality=665K]
              Scan[PSOC](?id, <http://www.arkivverket.no/standarder/noark5/arkivstruktur/publisertDato>, ?publisertDato) [cardinality=3.1M]
            Scan[PSOC](?id, <http://www.arkivverket.no/standarder/noark5/arkivstruktur/journaldato>, ?journaldato) [cardinality=2.0M]
          Union [cardinality=25.8M]
            MergeJoin[?dokumentbeskrivelse] [cardinality=225K]
              Scan[PSOC](?dokumentbeskrivelse, <http://www.arkivverket.no/standarder/noark5/arkivstruktur/tittel>, ?dok_tittel) [cardinality=436K]
              MergeJoin[?dokumentbeskrivelse] [cardinality=225K]
                Scan[PSOC](?dokumentbeskrivelse, <http://www.arkivverket.no/standarder/noark5/arkivstruktur/tittel_SENSITIV>, ?dok_tittel_SENSITIV) [cardinality=436K]
                Scan[POSC](?id, <http://www.arkivverket.no/standarder/noark5/arkivstruktur/dokumentbeskrivelse>, ?dokumentbeskrivelse) [cardinality=225K]
            Union [cardinality=25.5M]
              MergeJoin[?dokobjekt] [cardinality=225K]
                Sort(?dokobjekt) [cardinality=225K]
                  MergeJoin[?dokumentbeskrivelse] [cardinality=225K]
                    NaryJoin [cardinality=225K]
                      Scan[PSOC](?dokumentbeskrivelse, <http://www.arkivverket.no/standarder/noark5/arkivstruktur/dokumentobjekt>, ?dokobjekt) [cardinality=229K]
                      Scan[PSOC](?dokumentbeskrivelse, <http://www.arkivverket.no/standarder/noark5/arkivstruktur/tittel>, ?dok_tittel) [cardinality=436K]
                      Scan[PSOC](?dokumentbeskrivelse, <http://www.arkivverket.no/standarder/noark5/arkivstruktur/tittel_SENSITIV>, ?dok_tittel_SENSITIV) [cardinality=436K]
                    Scan[POSC](?id, <http://www.arkivverket.no/standarder/noark5/arkivstruktur/dokumentbeskrivelse>, ?dokumentbeskrivelse) [cardinality=225K]
                Scan[PSOC](?dokobjekt, <http://www.arkivverket.no/standarder/noark5/arkivstruktur/referanseDokumentfil>, ?referanseDokumentfil) [cardinality=229K]
              Union [cardinality=25.3M]
                MergeJoinOuter[?korrespondansepart] [cardinality=2.6M]
                  MergeJoin[?korrespondansepart] [cardinality=2.6M]
                    MergeJoin[?korrespondansepart] [cardinality=2.6M]
                      Scan[PSOC](?korrespondansepart, <http://www.arkivverket.no/standarder/noark5/arkivstruktur/korrespondansepartNavn>, ?korrespondansepartNavn) [cardinality=2.6M]
                      Scan[PSOC](?korrespondansepart, <http://www.arkivverket.no/standarder/noark5/arkivstruktur/korrespondanseparttype>, ?korrespondanseparttype) [cardinality=2.6M]
                    MergeJoin[?korrespondansepart] [cardinality=2.6M]
                      Scan[PSOC](?korrespondansepart, <http://www.arkivverket.no/standarder/noark5/arkivstruktur/korrespondansepartNavn_SENSITIV>, ?korrespondansepartNavn_SENSITIV) [cardinality=2.6M]
                      Scan[POSC](?id, <http://www.arkivverket.no/standarder/noark5/arkivstruktur/korrespondansepart>, ?korrespondansepart) [cardinality=2.6M]
                  Scan[PSOC](?korrespondansepart, <http://www.arkivverket.no/standarder/noark5/arkivstruktur/postadresse>, ?korrespondansepart_postadresse) [cardinality=0]
                Union [cardinality=22.7M]
                  MergeJoin[?vanaeuuv] [cardinality=11.4M]
                    PropertyPath(?id -> ?vanaeuuv, minLength=1, sorted by=?vanaeuuv) [cardinality=11.4M]
                      Scan[POSC](?id, <http://www.arkivverket.no/standarder/noark5/arkivstruktur/parent>, ?vanaeuuv) [cardinality=5.7M]
                    Scan[PSOC](?vanaeuuv, <http://www.arkivverket.no/standarder/noark5/arkivstruktur/arkivskaper>, ?arkivskaper) [cardinality=146]
                  DirectHashJoin[?eqcmffcp] [cardinality=11.4M]
                    MergeJoin[?arkivskaper] [cardinality=146]
                      PropertyPath(?arkivskaper -> ?arkivskaperTransitive, minLength=0, sorted by=?arkivskaper) [cardinality=25.5M]
                        Scan[PSOC](?arkivskaper, <http://data.einnsyn.no/virksomhetmeta/parent>, ?arkivskaperTransitive) [cardinality=396]
                      Scan[POSC](?eqcmffcp, <http://www.arkivverket.no/standarder/noark5/arkivstruktur/arkivskaper>, ?arkivskaper) [cardinality=146]
                    PropertyPath(?id -> ?eqcmffcp, minLength=1, sorted by=?eqcmffcp) [cardinality=11.4M]
                      Scan[POSC](?id, <http://www.arkivverket.no/standarder/noark5/arkivstruktur/parent>, ?eqcmffcp) [cardinality=5.7M]
        VALUES (?id) {
          (http://difi.oep.dump/journalpost/14084516 )
          (http://difi.oep.dump/journalpost/14084517 )
        }

Which times out

And If I only bind one value for ?id, instead of two. Then the query plan estimates completely change:

Reduced [cardinality=5]
  Projection(?id AS ?subject, ?lxncccos AS ?predicate, ?tpasyblp AS ?object;
            ?id AS ?subject, ?ouenovkw AS ?predicate, ?offentligTittel AS ?object;
            ?id AS ?subject, ?hfwucunp AS ?predicate, ?offentligTittel_SENSITIV AS ?object;
            ?id AS ?subject, ?ysaoxiqk AS ?predicate, ?parent AS ?object;
            ?id AS ?subject, ?rsgisexc AS ?predicate, ?dokumentbeskrivelse AS ?object;
            ?dokumentbeskrivelse AS ?subject, ?lxncccos AS ?predicate, ?tepuatqd AS ?object;
            ?dokumentbeskrivelse AS ?subject, ?ruxrsjwm AS ?predicate, ?dok_tittel AS ?object;
            ?dokumentbeskrivelse AS ?subject, ?asqhyskt AS ?predicate, ?dok_tittel_SENSITIV AS ?object;
            ?dokumentbeskrivelse AS ?subject, ?zqmojnua AS ?predicate, ?dokobjekt AS ?object;
            ?dokobjekt AS ?subject, ?lxncccos AS ?predicate, ?gquooqfl AS ?object;
            ?dokobjekt AS ?subject, ?omuxdmxe AS ?predicate, ?referanseDokumentfil AS ?object;
            ?id AS ?subject, ?doyoquqb AS ?predicate, ?korrespondansepart AS ?object;
            ?korrespondansepart AS ?subject, ?lxncccos AS ?predicate, ?vrayqwyp AS ?object;
            ?korrespondansepart AS ?subject, ?byzprypk AS ?predicate, ?korrespondansepartNavn AS ?object;
            ?korrespondansepart AS ?subject, ?meotojwb AS ?predicate, ?korrespondansepartNavn_SENSITIV AS ?object;
            ?korrespondansepart AS ?subject, ?fohydbiz AS ?predicate, ?korrespondanseparttype AS ?object;
            ?id AS ?subject, ?qemuwhih AS ?predicate, ?arkivertDato AS ?object;
            ?id AS ?subject, ?mcbmkuun AS ?predicate, ?forfatter AS ?object;
            ?id AS ?subject, ?zbkujitp AS ?predicate, ?journalpostnummer AS ?object;
            ?id AS ?subject, ?yhixwbpb AS ?predicate, ?journalstatus AS ?object;
            ?korrespondansepart AS ?subject, ?yrbaertm AS ?predicate, ?korrespondansepart_postadresse AS ?object;
            ?id AS ?subject, ?vajzxcrp AS ?predicate, ?noekkelord AS ?object;
            ?id AS ?subject, ?tkrkpfcm AS ?predicate, ?opprettetAv AS ?object;
            ?id AS ?subject, ?yzjcejpr AS ?predicate, ?opprettetDato AS ?object;
            ?id AS ?subject, ?hbmobvzq AS ?predicate, ?publisertDato AS ?object;
            ?id AS ?subject, ?crvdewrp AS ?predicate, ?journaldato AS ?object;
            ?id AS ?subject, ?fjzwfprl AS ?predicate, ?arkivskaper AS ?object;
            ?id AS ?subject, ?fcyowiiq AS ?predicate, ?arkivskaperTransitive AS ?object) [cardinality=5]
    Bind((<http://www.arkivverket.no/standarder/noark5/arkivstruktur/publisertDato> AS ?hbmobvzq) (<http://www.arkivverket.no/standarder/noark5/arkivstruktur/parent> AS ?ysaoxiqk) (<http://www.arkivverket.no/standarder/noark5/arkivstruktur/opprettetAv> AS ?tkrkpfcm) (<http://www.arkivverket.no/standarder/noark5/arkivstruktur/referanseDokumentfil> AS ?omuxdmxe) (<http://www.arkivverket.no/standarder/noark5/arkivstruktur/korrespondansepartNavn_SENSITIV> AS ?meotojwb) (<http://www.arkivverket.no/standarder/noark5/arkivstruktur/dokumentobjekt> AS ?zqmojnua) (<http://www.arkivverket.no/standarder/noark5/arkivstruktur/korrespondansepart> AS ?doyoquqb) (<http://www.arkivverket.no/standarder/noark5/arkivstruktur/Korrespondansepart> AS ?vrayqwyp) (<http://www.arkivverket.no/standarder/noark5/arkivstruktur/journaldato> AS ?crvdewrp) (<http://www.arkivverket.no/standarder/noark5/arkivstruktur/Journalpost> AS ?tpasyblp) (<http://www.arkivverket.no/standarder/noark5/arkivstruktur/tittel> AS ?ruxrsjwm) (<http://www.arkivverket.no/standarder/noark5/arkivstruktur/Dokumentbeskrivelse> AS ?tepuatqd) (<http://www.arkivverket.no/standarder/noark5/arkivstruktur/arkivertDato> AS ?qemuwhih) (<http://www.arkivverket.no/standarder/noark5/arkivstruktur/journalpostnummer> AS ?zbkujitp) (<http://www.arkivverket.no/standarder/noark5/arkivstruktur/Dokumentobjekt> AS ?gquooqfl) (<http://www.arkivverket.no/standarder/noark5/arkivstruktur/journalstatus> AS ?yhixwbpb) (<http://www.arkivverket.no/standarder/noark5/arkivstruktur/arkivskaperTransitive> AS ?fcyowiiq) (<http://www.arkivverket.no/standarder/noark5/arkivstruktur/offentligTittel> AS ?ouenovkw) (<http://www.arkivverket.no/standarder/noark5/arkivstruktur/korrespondansepartNavn> AS ?byzprypk) (<http://www.arkivverket.no/standarder/noark5/arkivstruktur/forfatter> AS ?mcbmkuun) (<http://www.arkivverket.no/standarder/noark5/arkivstruktur/arkivskaper> AS ?fjzwfprl) (rdf:type AS ?lxncccos) (<http://www.arkivverket.no/standarder/noark5/arkivstruktur/korrespondanseparttype> AS ?fohydbiz) (<http://www.arkivverket.no/standarder/noark5/arkivstruktur/tittel_SENSITIV> AS ?asqhyskt) (<http://www.arkivverket.no/standarder/noark5/arkivstruktur/opprettetDato> AS ?yzjcejpr) (<http://www.arkivverket.no/standarder/noark5/arkivstruktur/dokumentbeskrivelse> AS ?rsgisexc) (<http://www.arkivverket.no/standarder/noark5/arkivstruktur/noekkelord> AS ?vajzxcrp) (<http://www.arkivverket.no/standarder/noark5/arkivstruktur/offentligTittel_SENSITIV> AS ?hfwucunp) (<http://www.arkivverket.no/standarder/noark5/arkivstruktur/postadresse> AS ?yrbaertm)) [cardinality=5]
      Bind((<http://difi.oep.dump/journalpost/14084516> AS ?id)) [cardinality=5]
        Union [cardinality=5]
          LoopJoinOuter[_] [cardinality=0]
            LoopJoinOuter[_] [cardinality=0]
              LoopJoinOuter[_] [cardinality=0]
                LoopJoinOuter[_] [cardinality=0]
                  LoopJoinOuter[_] [cardinality=0]
                    LoopJoinOuter[_] [cardinality=0]
                      LoopJoinOuter[_] [cardinality=0]
                        LoopJoinOuter[_] [cardinality=0]
                          LoopJoinOuter[_] [cardinality=0]
                            LoopJoin[_] [cardinality=1]
                              LoopJoin[_] [cardinality=1]
                                LoopJoin[_] [cardinality=1]
                                  Scan[SPOC](<http://difi.oep.dump/journalpost/14084516>, <http://www.arkivverket.no/standarder/noark5/arkivstruktur/offentligTittel>, ?offentligTittel) [cardinality=1]
                                  Scan[SPOC](<http://difi.oep.dump/journalpost/14084516>, rdf:type, <http://www.arkivverket.no/standarder/noark5/arkivstruktur/Journalpost>) [cardinality=1]
                                Scan[SPOC](<http://difi.oep.dump/journalpost/14084516>, <http://www.arkivverket.no/standarder/noark5/arkivstruktur/offentligTittel_SENSITIV>, ?offentligTittel_SENSITIV) [cardinality=1]
                              Scan[SPOC](<http://difi.oep.dump/journalpost/14084516>, <http://www.arkivverket.no/standarder/noark5/arkivstruktur/parent>, ?parent) [cardinality=1]
                            Scan[SPOC](<http://difi.oep.dump/journalpost/14084516>, <http://www.arkivverket.no/standarder/noark5/arkivstruktur/arkivertDato>, ?arkivertDato) [cardinality=0]
                          Scan[SPOC](<http://difi.oep.dump/journalpost/14084516>, <http://www.arkivverket.no/standarder/noark5/arkivstruktur/forfatter>, ?forfatter) [cardinality=0]
                        Scan[SPOC](<http://difi.oep.dump/journalpost/14084516>, <http://www.arkivverket.no/standarder/noark5/arkivstruktur/journalpostnummer>, ?journalpostnummer) [cardinality=1]
                      Scan[SPOC](<http://difi.oep.dump/journalpost/14084516>, <http://www.arkivverket.no/standarder/noark5/arkivstruktur/journalstatus>, ?journalstatus) [cardinality=0]
                    Scan[SPOC](<http://difi.oep.dump/journalpost/14084516>, <http://www.arkivverket.no/standarder/noark5/arkivstruktur/noekkelord>, ?noekkelord) [cardinality=0]
                  Scan[SPOC](<http://difi.oep.dump/journalpost/14084516>, <http://www.arkivverket.no/standarder/noark5/arkivstruktur/opprettetAv>, ?opprettetAv) [cardinality=0]
                Scan[SPOC](<http://difi.oep.dump/journalpost/14084516>, <http://www.arkivverket.no/standarder/noark5/arkivstruktur/opprettetDato>, ?opprettetDato) [cardinality=0]
              Scan[SPOC](<http://difi.oep.dump/journalpost/14084516>, <http://www.arkivverket.no/standarder/noark5/arkivstruktur/publisertDato>, ?publisertDato) [cardinality=1]
            Scan[SPOC](<http://difi.oep.dump/journalpost/14084516>, <http://www.arkivverket.no/standarder/noark5/arkivstruktur/journaldato>, ?journaldato) [cardinality=1]
          Union [cardinality=5]
            MergeJoin[?dokumentbeskrivelse] [cardinality=0]
              Scan[PSOC](?dokumentbeskrivelse, <http://www.arkivverket.no/standarder/noark5/arkivstruktur/tittel>, ?dok_tittel) [cardinality=436K]
              MergeJoin[?dokumentbeskrivelse] [cardinality=0]
                Scan[PSOC](?dokumentbeskrivelse, <http://www.arkivverket.no/standarder/noark5/arkivstruktur/tittel_SENSITIV>, ?dok_tittel_SENSITIV) [cardinality=436K]
                Scan[SPOC](<http://difi.oep.dump/journalpost/14084516>, <http://www.arkivverket.no/standarder/noark5/arkivstruktur/dokumentbeskrivelse>, ?dokumentbeskrivelse) [cardinality=0]
            Union [cardinality=5]
              MergeJoin[?dokobjekt] [cardinality=0]
                Scan[PSOC](?dokobjekt, <http://www.arkivverket.no/standarder/noark5/arkivstruktur/referanseDokumentfil>, ?referanseDokumentfil) [cardinality=229K]
                Sort(?dokobjekt) [cardinality=0]
                  MergeJoin[?dokumentbeskrivelse] [cardinality=0]
                    Scan[PSOC](?dokumentbeskrivelse, <http://www.arkivverket.no/standarder/noark5/arkivstruktur/dokumentobjekt>, ?dokobjekt) [cardinality=229K]
                    MergeJoin[?dokumentbeskrivelse] [cardinality=0]
                      Scan[PSOC](?dokumentbeskrivelse, <http://www.arkivverket.no/standarder/noark5/arkivstruktur/tittel>, ?dok_tittel) [cardinality=436K]
                      MergeJoin[?dokumentbeskrivelse] [cardinality=0]
                        Scan[PSOC](?dokumentbeskrivelse, <http://www.arkivverket.no/standarder/noark5/arkivstruktur/tittel_SENSITIV>, ?dok_tittel_SENSITIV) [cardinality=436K]
                        Scan[SPOC](<http://difi.oep.dump/journalpost/14084516>, <http://www.arkivverket.no/standarder/noark5/arkivstruktur/dokumentbeskrivelse>, ?dokumentbeskrivelse) [cardinality=0]
              Union [cardinality=5]
                MergeJoinOuter[?korrespondansepart] [cardinality=1]
                  MergeJoin[?korrespondansepart] [cardinality=1]
                    Scan[PSOC](?korrespondansepart, <http://www.arkivverket.no/standarder/noark5/arkivstruktur/korrespondansepartNavn_SENSITIV>, ?korrespondansepartNavn_SENSITIV) [cardinality=2.6M]
                    MergeJoin[?korrespondansepart] [cardinality=1]
                      Scan[SPOC](<http://difi.oep.dump/journalpost/14084516>, <http://www.arkivverket.no/standarder/noark5/arkivstruktur/korrespondansepart>, ?korrespondansepart) [cardinality=1]
                      MergeJoin[?korrespondansepart] [cardinality=2.6M]
                        Scan[PSOC](?korrespondansepart, <http://www.arkivverket.no/standarder/noark5/arkivstruktur/korrespondansepartNavn>, ?korrespondansepartNavn) [cardinality=2.6M]
                        Scan[PSOC](?korrespondansepart, <http://www.arkivverket.no/standarder/noark5/arkivstruktur/korrespondanseparttype>, ?korrespondanseparttype) [cardinality=2.6M]
                  Scan[PSOC](?korrespondansepart, <http://www.arkivverket.no/standarder/noark5/arkivstruktur/postadresse>, ?korrespondansepart_postadresse) [cardinality=0]
                Union [cardinality=4]
                  MergeJoin[?dslixwma] [cardinality=2]
                    Sort(?dslixwma) [cardinality=2]
                      PropertyPath(<http://difi.oep.dump/journalpost/14084516> -> ?dslixwma, minLength=1) [cardinality=2]
                        Scan[SPOC](<http://difi.oep.dump/journalpost/14084516>, <http://www.arkivverket.no/standarder/noark5/arkivstruktur/parent>, ?dslixwma) [cardinality=1]
                    Scan[PSOC](?dslixwma, <http://www.arkivverket.no/standarder/noark5/arkivstruktur/arkivskaper>, ?arkivskaper) [cardinality=146]
                  MergeJoin[?arkivskaper] [cardinality=2]
                    Sort(?arkivskaper) [cardinality=2]
                      MergeJoin[?mmzavvnu] [cardinality=2]
                        Sort(?mmzavvnu) [cardinality=2]
                          PropertyPath(<http://difi.oep.dump/journalpost/14084516> -> ?mmzavvnu, minLength=1) [cardinality=2]
                            Scan[SPOC](<http://difi.oep.dump/journalpost/14084516>, <http://www.arkivverket.no/standarder/noark5/arkivstruktur/parent>, ?mmzavvnu) [cardinality=1]
                        Scan[PSOC](?mmzavvnu, <http://www.arkivverket.no/standarder/noark5/arkivstruktur/arkivskaper>, ?arkivskaper) [cardinality=146]
                    PropertyPath(?arkivskaper -> ?arkivskaperTransitive, minLength=0, sorted by=?arkivskaper) [cardinality=25.5M]
                      Scan[PSOC](?arkivskaper, <http://data.einnsyn.no/virksomhetmeta/parent>, ?arkivskaperTransitive) [cardinality=396]

Hi Havard,

Thanks for the report. This is indeed a limitation of the query optimizer which will be addressed soon, probably for 5.0.

Here’s what happens: when you use a singleton VALUES, the optimizer statically binds the variable to that value everywhere in the plan, making all scans with that variable a lot more selective. When you have two constants in a VALUES, it can’t do so and it currently doesn’t do anything advanced with it like using a UNION for each constant value.

One temporary workaround which I’d try would be to copy the VALUES to every branch of your UNIONs which binds the ?id variable (Inconvenient, I know). This should make the branches a lot more selective. This is what the optimizer currently does for selective scans (propagating it down to UNIONs) but not yet for VALUES.

Best,
Pavel

Hi Pavel,

This worked very well. Thank you.

That query is getting quite bloated now. It’s been rewritten to eliminate nested optionals and now also to push down VALUES declarations.

Do you know if the optimisations for nested optionals will be released soon?

Cheers,
Håvard

Hi Håvard,

I understand the inconvenience. There’re no major technical difficulties implementing it for 5.0, which should go out in March. I can’t promise it at this point because there’re other major changes coming up, e.g. the new memory management, cluster improvements, etc., but we tentatively scheduled this improvement for 5.0 too.

Once 5.0 is out, you can check the release notes for the issue #3551 to see if it’s been fixed.

Best,
Pavel

This topic was automatically closed 14 days after the last reply. New replies are no longer allowed.