Hello Karol

Thank you for your answer.

The query is a very simplified one, just for show the idea.

I can create an index as the following:

CREATE INDEX IDX_ASIENTOSDET1 ON ASIENTOSDET COMPUTED BY (
   CAST(ASI_ANOEJE AS CHAR(5)) ||
   CAST(ASI_CODSUC AS CHAR(5)) ||
   CAST(EXTRACT(MONTH FROM (SELECT ASC_FECHAX FROM ASIENTOSCAB WHERE
ASC_CODSUC = ASI_CODSUC AND ASC_IDENTI = ASI_IDECAB)) AS CHAR(2)) ||
   ASI_NUMCUE ||
   ASI_NUMSUB
);

But is is not used in the PLAN. I had tried several alternatives but
without success until now. Using CAST(), without using CAST() and so on.

I don't want to add a column ASI_FECHAX to my table ASIENTOSDET if I can
avoid create it, but I need rows grouped by that column.

ASIENTOSCAB and ASIENTOSDET have a parent-child relationship, where
ASIENTOSCAB is the parent.

Greetings.

Walter.






On Mon, Aug 24, 2015 at 1:40 PM, liviusliv...@poczta.onet.pl
[firebird-support] <firebird-support@yahoogroups.com> wrote:

>
>
> Hi,
>
> No – you can not create single index on more then one table
> But you really need it?
> How big is resultset? I do not see any filter in this query no HAVING nor
> WHERE
>
> regards,
> Karol Bieniaszewski
>
> *From:* mailto:firebird-support@yahoogroups.com
> <firebird-support@yahoogroups.com>
> *Sent:* Monday, August 24, 2015 7:28 PM
> *To:* firebird-support@yahoogroups.com
> *Subject:* [firebird-support] Expression index for use with the GROUP BY
> clause
>
>
>
> Hello everybody
>
> I had the following query:
>
> SELECT
>    D.ASI_ANOEJE,
>    D.ASI_CODSUC,
>    EXTRACT(MONTH FROM C.ASC_FECHAX) AS ASI_NUMMES,
>    D.ASI_NUMCUE,
>    D.ASI_NUMSUB
> FROM
>    ASIENTOSDET D
> JOIN
>    ASIENTOSCAB C
>       ON D.ASI_CODSUC = C.ASC_CODSUC AND
>          D.ASI_IDECAB = C.ASC_IDENTI
> GROUP BY
>    D.ASI_ANOEJE,
>    D.ASI_CODSUC,
>    EXTRACT(MONTH FROM C.ASC_FECHAX),
>    D.ASI_NUMCUE,
>    D.ASI_NUMSUB
>
> Is it possible to have an expression index for use here with the GROUP BY
> clause?
>
> The PLAN is the following:
>
> PLAN SORT (JOIN (D NATURAL, C INDEX (PK_ASIENTOSCAB)))
>
> As you can see there is a SORT there caused by the GROUP BY clause.
>
> ASI_ANOEJE is SMALLINT
> ASI_CODSUC is SMALLINT
> ASC_FECHAX is DATE
> ASI_NUMCUE is VARCHAR(16)
> ASI_NUMSUB is CHAR(5)
>
> I'm using Firebird 2.5.4
>
> Greetings.
>
> Walter.
>
>
>
>
> 
>
  • ... 'Walter R. Ojeda Valiente' sistemas2000profesio...@gmail.com [firebird-support]
    • ... liviusliv...@poczta.onet.pl [firebird-support]
      • ... 'Walter R. Ojeda Valiente' sistemas2000profesio...@gmail.com [firebird-support]
        • ... liviusliv...@poczta.onet.pl [firebird-support]
          • ... 'Walter R. Ojeda Valiente' sistemas2000profesio...@gmail.com [firebird-support]
        • ... liviusliv...@poczta.onet.pl [firebird-support]

Reply via email to