suche 36x36
  • Admin-Scout-small-Banner
           

    CURSOR Admin-Scout

    get the ultimate tool for Informix

    pfeil  
Latest versionsfixlist
14.10.xC10 FixList
12.10.xC16.X5 FixList
11.70.xC9.XB FixList
11.50.xC9.X2 FixList
11.10.xC3.W5 FixList
Have problems? - contact us.
Register for free anmeldung-x26
Contact form kontakt-x26

Informix - Problem description

Problem IT27311 Status: Closed

EXPENSIVE PLAN WITH HIGH ESTIMATED COST IS CHOSEN OVER A MUCH BETTER PLAN
FOR QUERY WITH MULTIPLE ANSI JOINS

product:
INFORMIX SERVER / 5725A3900 / B70 - IDS 11.70
Problem description:
The following problem was observed on AIX64 after customer
upgraded from
11.70.FC6 to 11.70.FC9.

A particular query utilizing ansi join is optimized with an
expense plan and results in a
long execution time for the  query that has much more desirable
plan that is not chosen.
The good plan can be observed using the ORDERED optimizer
directive for this query.

The sqexplain.out output for the good plan using the ORDERED
optimizer directive and
the plan that is chosen in 11.70.FC6 follows:
****************************************************************
*

QUERY: (OPTIMIZATION TIMESTAMP: 12-12-2018 15:57:09)
------
SELECT --+ORDERED
doc.nrDocumento,
hum.noHumano,
inst.nrInscrEstadual,
inst.noRazaoSocial,
huminst.sqHumanoInst
FROM
(
   (
      (
         (
            (
               (
                  tbPro_Processo proc
                  INNER JOIN tbPro_InteressePro intpro ON
intpro.nrProcesso = proc.nrProcesso
               )
               INNER JOIN tbCad_HumanoInst huminst ON
intpro.sqHumanoInst = huminst.sqHumanoInst
            )
            INNER JOIN tbCad_DocHumInst dhi ON dhi.sqHumanoInst
= huminst.sqHumanoInst
         )
         INNER JOIN tbCad_Documento doc ON doc.sqDocumento =
dhi.sqDocumento
      )
      LEFT OUTER JOIN tbCad_Humano hum ON huminst.sqHumanoInst =
hum.sqHumano
   )
   LEFT OUTER JOIN tbCad_Instituicao inst ON
huminst.sqHumanoInst = inst.sqHumanoInst
)
WHERE proc.nrProcesso = '15204520180'
AND doc.sqTpDocHumInst IN (2,3)
AND intpro.stRegistro = 1
AND dhi.stRegistro = 1

DIRECTIVES FOLLOWED:
ORDERED
DIRECTIVES NOT FOLLOWED:

Estimated Cost: 10
Estimated # of Rows Returned: 1

                          1) informix.proc: INDEX PATH

                            (1) Index Name: informix. 163_518
                                Index Keys: nrprocesso
(Key-Only)  (Serial, fragments: ALL)
                                Lower Index Filter:
informix.proc.nrprocesso = '15204520180'

                          2) informix.intpro: INDEX PATH

                                Filters:
informix.intpro.stregistro = 1

                            (1) Index Name: camila. 1722_262977
                                Index Keys: nrprocesso
(Serial, fragments: ALL)
                                Lower Index Filter:
informix.intpro.nrprocesso = informix.proc.nrprocesso
                        NESTED LOOP JOIN

                      3) informix.huminst: INDEX PATH

                        (1) Index Name: informix. 100_1
                            Index Keys: sqhumanoinst
(Key-Only)  (Serial, fragments: ALL)
                            Lower Index Filter:
informix.intpro.sqhumanoinst = informix.huminst.sqhumanoinst
                    NESTED LOOP JOIN

                  4) informix.dhi: INDEX PATH

                    (1) Index Name: usudba.xie1tbcad_dochumin
                        Index Keys: stregistro sqhumanoinst
sqdocumento   (Key-Only)  (Serial, fragments: ALL)
                        Lower Index Filter:
(informix.intpro.sqhumanoinst = informix.dhi.sqhumanoinst AND
informix.dhi.stregistro = 1 )

                Other Join Filters: informix.intpro.sqhumanoinst
= informix.dhi.sqhumanoinst
                NESTED LOOP JOIN

              5) informix.doc: INDEX PATH

                    Filters: informix.doc.sqtpdochuminst IN (2 ,
3 )

                (1) Index Name: informix. 888_6817
                    Index Keys: sqdocumento   (Serial,
fragments: ALL)
                    Lower Index Filter: informix.doc.sqdocumento
= informix.dhi.sqdocumento
            NESTED LOOP JOIN

          6) informix.hum: INDEX PATH

            (1) Index Name: informix. 101_10
                Index Keys: sqhumano   (Serial, fragments: ALL)
                Lower Index Filter:
informix.huminst.sqhumanoinst = informix.hum.sqhumano

        ON-Filters:informix.huminst.sqhumanoinst =
informix.hum.sqhumano
        NESTED LOOP JOIN(LEFT OUTER JOIN)

      7) informix.inst: INDEX PATH

        (1) Index Name: informix. 205_902
            Index Keys: sqhumanoinst   (Serial, fragments: ALL)
            Lower Index Filter: informix.huminst.sqhumanoinst =
informix.inst.sqhumanoinst

    ON-Filters:informix.huminst.sqhumanoinst =
informix.inst.sqhumanoinst
    NESTED LOOP JOIN(LEFT OUTER JOIN)

****************************************************************
*
The poor plan that the 11.70.FC9 optimizer is choosing follows:
****************************************************************
*

QUERY: (OPTIMIZATION TIMESTAMP: 12-12-2018 15:51:44)
------


Estimated Cost: 19796000
Estimated # of Rows Returned: 1

                      1) informix.proc: INDEX PATH

                        (1) Index Name: informix. 163_518
                            Index Keys: nrprocesso   (Key-Only)
(Serial, fragments: ALL)
                            Lower Index Filter:
informix.proc.nrprocesso = '15204520180'

                      2) informix.intpro: INDEX PATH

                            Filters: informix.intpro.stregistro
= 1

                        (1) Index Name: camila. 1722_262977
                            Index Keys: nrprocesso   (Serial,
fragments: ALL)
                            Lower Index Filter:
informix.intpro.nrprocesso = informix.proc.nrprocesso
                    NESTED LOOP JOIN

                      3) informix.doc: SEQUENTIAL SCAN

                            Filters: informix.doc.sqtpdochuminst
IN (2 , 3 )

                      4) informix.dhi: INDEX PATH

                            Filters: informix.dhi.stregistro = 1

                        (1) Index Name: informix. 889_14844
                            Index Keys: sqdocumento   (Serial,
fragments: ALL)
                            Lower Index Filter:
informix.doc.sqdocumento = informix.dhi.sqdocumento
                    NESTED LOOP JOIN

                Other Join Filters: informix.intpro.sqhumanoinst
= informix.dhi.sqhumanoinst
                NESTED LOOP JOIN

              5) informix.huminst: INDEX PATH

                (1) Index Name: informix. 100_1
                    Index Keys: sqhumanoinst   (Key-Only)
(Serial, fragments: ALL)
                    Lower Index Filter:
informix.intpro.sqhumanoinst = informix.huminst.sqhumanoinst

            Other Join Filters: informix.intpro.sqhumanoinst =
informix.huminst.sqhumanoinst
            NESTED LOOP JOIN

          6) informix.hum: INDEX PATH

            (1) Index Name: informix. 101_10
                Index Keys: sqhumano   (Serial, fragments: ALL)
                Lower Index Filter:
informix.huminst.sqhumanoinst = informix.hum.sqhumano

        ON-Filters:informix.huminst.sqhumanoinst =
informix.hum.sqhumano
        NESTED LOOP JOIN(LEFT OUTER JOIN)

      7) informix.inst: INDEX PATH

        (1) Index Name: informix. 205_902
            Index Keys: sqhumanoinst   (Serial, fragments: ALL)
            Lower Index Filter: informix.huminst.sqhumanoinst =
informix.inst.sqhumanoinst

    ON-Filters:informix.huminst.sqhumanoinst =
informix.inst.sqhumanoinst
    NESTED LOOP JOIN(LEFT OUTER JOIN)
Problem Summary:
****************************************************************
* USERS AFFECTED:                                              *
* Users of IDS 11.70.xC9 and earlier versions.                 *
****************************************************************
* PROBLEM DESCRIPTION:                                         *
* Expensive plan with high estimated cost is chosen over a     *
* much better plan for query with multiple ANSI joins.         *
****************************************************************
* RECOMMENDATION:                                              *
****************************************************************
Local Fix:
Solution
Workaround
not known / see Local fix
Timestamps
Date  - problem reported    :
Date  - problem closed      :
Date  - last modified       :
12.12.2018
08.10.2019
31.08.2020
Problem solved at the following versions (IBM BugInfos)
Problem solved according to the fixlist(s) of the following version(s)
Informix EditionsInformix Editions
Informix Editions
DocumentationDocumentation
Documentation
IBM NewsletterIBM Newsletter
IBM Newsletter
Current BugsCurrent Bugs
Current Bugs
Bug ResearchBug Research
Bug Research
Bug FixlistsBug Fixlists
Bug Fixlists
Release NotesRelease Notes
Release Notes
Machine NotesMachine Notes
Machine Notes
Release NewsRelease News
Release News
Product LifecycleProduct Lifecycle
Lifecycle
Media DownloadMedia Download
Media Download