Re: How to fix cache buffer chain issue

From: Jonathan Lewis <jlewisoracle_at_gmail.com>
Date: Mon, 21 Jun 2021 09:06:10 +0100
Message-ID: <CAGtsp8nSEmf7fiTPfT_QaM=pSjLhjkM0Mcxr0GFDuMGfNkRymA_at_mail.gmail.com>



Thanks, Mladen and Andy, for prompting me to look at the original SQL.

Without spending more than a couple of minutes on the code I get the impression that it's trying to
1) get all the data for a given date DT_CT, then 2) summarise it into non-overlapping ranges of adt.

The code seems very repetitive with the main variation being:

            AND (TRUNC ( :B2) - ADT) <= 1

            AND (TRUNC ( :B2) - ADT) > 1
            AND (TRUNC ( :B2) - ADT) <= 2

            AND (TRUNC ( :B2) - ADT) > 2
            AND (TRUNC ( :B2) - ADT) <= 3

            AND (TRUNC ( :B2) - ADT) > 3
            AND (TRUNC ( :B2) - ADT) <= 4

            AND (TRUNC ( :B2) - ADT) > 4
            AND (TRUNC ( :B2) - ADT) <= 9

            AND (TRUNC ( :B2) - ADT) > 9
            AND (TRUNC ( :B2) - ADT) <= 14

            AND (TRUNC ( :B2) - ADT) > 60
            AND (TRUNC ( :B2) - ADT) <= 90

            AND (TRUNC ( :B2) - ADT) > 90

A "global" improvement might be to extract all the data for the date and then use something like a case expression to sum the data by the required data ranges.

Regards
Jonathan Lewis

--
http://www.freelists.org/webpage/oracle-l
Received on Mon Jun 21 2021 - 10:06:10 CEST

Original text of this message