Query with large elapsed time

Hi I use version 11.2.0.3.0 of oracle.

We have an executed query last night for around ~ 21hrs and then finished. I check sql execution history in OEM section monitored sql and and I saw the DB time is around 27 ~ dry only, while the elapsed time is ~ 21hrs, unable to understand why. Also when I went through the sql, it seems simple and here the main table contains ~ 600000 (6 Lakes) records and Refrence table contains 4 records. Also when I checked the gv$ active_session_history I don't have much expectation for this sql query event log, there was minimum queue of events as presence "SQL * Net more data to the client', 'direct path read temp'.» So I was wondering if the DB time is in seconds so why time is so high and what exact thing sql did during this time.

I think even the stats for the main tables seems bland, but then also the operation should not last for the amount of time (~ 21 hours). Please help me understand the scenario and the action we should take.

This is the execution plan.

SELECT          master.createtimestmp
    FROM master master, Refrence 
   WHERE master.Refrence_id = Refrence.Refrence_id
         AND (   (Refrence.Refrence_cd = 'A' AND master.createtimestmp <= (:1))
              OR (Refrence.Refrence_cd = 'B' AND master.createtimestmp <= :2)
                           OR ( (    Refrence.Refrence_cd = 'D'
                    AND master.createtimestmp <= :4
                    AND master.master_dltd_in = 0)
                  OR (TRUNC (master.createtimestmp) = TRUNC(:5)
                      AND master.master_dltd_in = 1)
       ))
ORDER BY master.createtimestmp
---------------------------------------------------------------------------------------------
| Id  | Operation           | Name          | Rows  | Bytes |TempSpc| Cost (%CPU)| Time     |
---------------------------------------------------------------------------------------------
|   0 | SELECT STATEMENT    |               |       |  2017K|       |         (1)| 00:04:06 |
|   1 |  SORT ORDER BY      |               |  844K |  2017K|  302M | 50482   (1)| 00:04:06 |
|*  2 |   HASH JOIN         |               |  844K |  2017K|       | 13678   (1)| 00:03:59 |
|   3 |    TABLE ACCESS FULL| Refrence      |     4 |    24 |       |     2   (0)| 00:00:01 |
|*  4 |    TABLE ACCESS FULL| Master        |  2M   |  1966K|       | 13668   (1)| 00:03:59 |
---------------------------------------------------------------------------------------------

 

It's classic based on demand for time for reflection (or network), for example:

1. open the cursor

2. remove n lines

3 do something side app with the retrieved lines

4 remove n lines more

5. repeat 3 & 4

6 complete execution / close the cursor

Thus, the query can be opened for a number of hours, but in terms of time to database, it is a few seconds.

The rest is all somewhere between the network and request but no database.

Tags: Database

Similar Questions

  • Elapsed time for the materialized view vs Master table query

    Hello all;

    Small confusion about time up for the vs Master materialized view table query

    SQL > select count (*), sum (quan_sold), sum (amt_sold) of the sale;
    COUNT (*) SUM (QUAN_SOLD) SUM (AMT_SOLD)
    6000000 12000000 720480000
    Elapsed time: 00:00:30.54
    SQL > create materialized view mv1
    2 activate the rewrite of the query as
    3. select count (*), sum (quan_sold), sum (amt_sold) of the sale;
    Materialized view created.
    Elapsed time: 00:00:01.45
    SQL > select count (*), sum (quan_sold), sum (amt_sold) of the sale;
    COUNT (*) SUM (QUAN_SOLD) SUM (AMT_SOLD)
    6000000 12000000 720480000
    Elapsed time: 00:00:00.01

    Please see the three cases "Elapsed Time"...

    When comparing other cases.
    1. my query takes long time (30.54), extraction of data from the sale
    2. create a materialized view takes less time (01:45) why?

    Source: http://uhesse.com/2009/07/08/brief-introduction-into-materialized-views/

    >
    Small confusion about elapsed time for the materialized view vs Master table query

    SQL > select count (*), sum (quan_sold), sum (amt_sold) from the sale.

    COUNT (*) SUM (QUAN_SOLD) SUM (AMT_SOLD)
    6000000 12000000 720480000
    Elapsed time: 00:00:30.54

    SQL > create materialized view mv1
    2 activate the rewrite of the query as
    3. select count (*), sum (quan_sold), sum (amt_sold) of the sale;
    Materialized view created.
    Elapsed time: 00:00:01.45

    SQL > select count (*), sum (quan_sold), sum (amt_sold) from the sale.

    COUNT (*) SUM (QUAN_SOLD) SUM (AMT_SOLD)
    6000000 12000000 720480000
    Elapsed time: 00:00:00.01

    Please see the three cases "Elapsed Time"...

    When comparing other cases.
    1. my query takes long time (30.54), extraction of data from the sale
    2. create a materialized view takes less time (01:45) why?
    >
    Many queries take less time the second time you run them. After the first performance, there may be many, if not all, lines in the buffer cache. Then the second round will not make any or all e/s physical but will obtain data from the buffer cache.

    Also, you haven't checked that the MV was even used for the second run.

    Drop the MV and make the query several times and means of the time. Then create the MV and do the same thing.

  • Ask the operation slow with large SGA and fast with little CMS

    Hello

    We have a situation where one of the insert is running slow and fast QA in PROD. Both are the same versions of database - Oracle 10.2.0.4 on HP Unix 11.31. To avoid the cause of databases running on another server, we copied from our Production database to the same server where the QA database is running and began with init.ora PROD that has 7 GB 6 GB SGA_TARGET and SGA_MAX_SIZE. For the QA database, SGA_MAX_SIZE is 700 MB and SGA_TARGET is 600 MB. Both are running on the same server, and with the same data. We have refreshed QA with data from PROD. If we start with PROD init.ora QA database, QA also behaves the same way PROD.

    This problem is only with the specific insert. Here is the result of this specific statement tkprof. Can someone please interpret this for me? I am poor in SQL tuning :-( Why the statement behaves ODD with the size of the SGA PROD? Generally, we would think THAT larger SGA should give better performance.

    call the query of disc elapsed to cpu count current lines
    ------- ------  -------- ---------- ---------- ---------- ----------  ----------
    Parse        1      0.00       0.00          0          0          0           0
    Run 1 56710.39 56067,75 7343 311186373 0 0
    Fetch        0      0.00       0.00          0          0          0           0
    ------- ------  -------- ---------- ---------- ---------- ----------  ----------
    Total 2 56710.39 56067,76 7343 311186373 0 0

    Chess in the library during parsing cache: 1
    Optimizer mode: CHOOSE
    The analysis of the user id: 27 (TEST)

    Rows Row Source operation
    -------  ---------------------------------------------------
    0 CRDETAIL of SEQUENCE (cr = 0 pr = 0 pw = time 0 = 29 US)
    0 REVIEWS (cr = 0 pr = 0 pw = time 0 = 21 US)
    0 SORT GROUP BY (cr = 0 pr = 0 pw = time 0 = 20 US)
    401 HASH RIGHT SEMI JOIN (cr = 23299915 pr 7343 pw = time = 0 = 93982966 en)
    237 TABLE ACCESS BY INDEX ROWID CR_STRUCTURE_VALUES2 (cr = 96 pr = 0 pw = time 0 = 504 en)
    253 CR_STRUCTURE_VALUES2_PK INDEX RANGE SCAN (cr = 4 pr = 0 pw = time 0 = 278 en)(object id 1467582)
    TABLE ACCESS BY INDEX ROWID CR_COST_REPOSITORY 841 (cr = 23306003 pr 7343 pw = time = 0 = 94546465 en)
    1317368058 NESTED LOOPS (cr = 79721182 pr 7343 pw = time = 0 = 18565176955 en)
    VIEW 26912 (cr = pr 9874 7343 pw = time = 0 = 5269231 en)
    26912 MINUS (cr = pr 9874 7343 pw = time = 0 = 5242317 en)
    27462 SORT UNIQUE (cr = 9627 pr = 7329 pw = time 0 = 5040815 en)
    271564 CR_STRUCTURE_VALUES2 TABLE FULL ACCESS (cr = 9627 pr = 7329 pw = time 0 = 1357961 en)
    568 SORT UNIQUE (cr = 247 pr = 14 pw = time 0 = 43467 US)
    TABLE ACCESS BY INDEX ROWID CR_STRUCTURE_VALUES2 2357 (cr = 247 pr = 14 pw = time 0 = US 14751)
    2357 CR_STRUCTURE_VALUES2_PK INDEX RANGE SCAN (cr = pr 11 = 14 pw = time 0 = 10028)(object id 1467582) US
    INDEX RANGE SCAN CRCR_MN_IX 1317341146 (cr = 79711308 pr = 0 pw = time 0 = 50420511 US)(object id 1469401)


    Implementation plan of lines
    -------  ---------------------------------------------------
    0 THE INSERT STATEMENT MODE: CHOOSE
    SEQUENCE "CRDETAIL" 0 (SEQUENCE)
    0 REVIEWS
    0 TRI (GROUP BY)
    401 HASH JOIN (RIGHT HALF)
    HOW TO ACCESS THE TABLE 237: ANALYSES (BY INDEX ROWID) OF
    "CR_STRUCTURE_VALUES2" (TABLE)
    INDEX 253 MODE: SCANNED (SCAN INTERVAL) OF
    "CR_STRUCTURE_VALUES2_PK" ((UNIQUE) INDEX)
    ACCESS MODE TO THE 841 TABLE: ANALYSIS (BY INDEX ROWID) OF "CR_COST_REPOSITORY" (TABLE)
    1317368058 NESTED LOOPS
    VIEW 26912
    26912 LESS
    27462 SORT (SINGLE)
    TABLE 271564 ACCESS MODE: ANALYZED (FULL) OF
    "CR_STRUCTURE_VALUES2" (TABLE)
    568 (SINGLE) SORT
    HOW TO ACCESS THE TABLE 2357: ANALYSES (BY INDEX ROWID)
    OF "CR_STRUCTURE_VALUES2" (TABLE)
    INDEX 2357 MODE: SCANNED (SCAN INTERVAL) OF
    "CR_STRUCTURE_VALUES2_PK" ((UNIQUE) INDEX)
    MODE 1317341146 INDEX: ANALYSIS (SCAN INTERVAL) OF "CRCR_MN_IX".
    (INDEX)

    ********************************************************************************

    And here is the statement in question:

    INSERT
    INTO cr_allocations_stg
      (
        "ID",
        "COMPANY",
        "GL_ACCOUNT",
        "COST_CENTER",
        "COST_ELEMENT",
        "PROFIT_CENTER",
        "MASTER_ORDER",
        "ORDER_NUMBER",
        " FUNDING_PROJECT",
        "POSTING_ORDER",
        "POSTING_COST_CENTER",
        "ORIG_COST_ELEMENT",
        "ORIG_COST_CENTER",
        "ORIG_PROFIT_CENTER",
        "TRADING_PARTNER",
        "WORK_ORDER_NUMBER",
        "DR_CR_ID",
        "LEDGER_SIGN",
        "QUANTITY",
        "AMOUNT",
        "MONTH_NUMBER",
        "MONTH_PERIOD",
        "GL_JOURNAL_CATEGORY",
        "AMOUNT_TYPE",
        "ALLOCATION_ID",
        "TARGET_CREDIT",
        "CROSS_CHARGE_COMPANY"
      )
    SELECT crdetail.nextval,
      "COMPANY",
      "GL_ACCOUNT",
      "COST_CENTER",
      '5253000',
      "PROFIT_CENTER" ,
      "MASTER_ORDER",
      "ORDER_NUMBER",
      "FUNDING_PROJECT",
      ' ',
      "POSTING_COST_CENTER",
      "ORIG_COST_ELEMENT",
      "ORIG_COST_CENTER",
      "ORIG_PROFIT_CENTER",
      " TRADING_PARTNER",
      "WORK_ORDER_NUMBER",
      CASE
        WHEN amount > 0
        THEN 1
        ELSE -1
      END,
      1,0,
      ROUND(amount * 0.0574000000, 2),
      month_number,
      0,
      '593',
      1 ,
      7,
      'TARGET',
      ' '
    FROM
      (SELECT "COMPANY",
        "GL_ACCOUNT",
        "COST_CENTER",
        "PROFIT_CENTER",
        "MASTER_ORDER",
        "FUNDING_PROJECT",
        "POSTING_COST_CENTER",
        "ORDER_NUMBER",
        "ORIG_COST_ELEMENT",
        "ORIG_COST_CENTER",
        "ORIG_PROFIT_CENTER",
        "TRADING_PARTNER",
        "WORK_ORDER_NUMBER",
        month_n umber,
        0,
        SUM(amount) amount,
        SUM(quantity) quantity
      FROM CR_COST_REPOSITORY
      WHERE (amount_type    = 1 )
      AND (month_number     = 201404)
      AND ( "MASTER_ORDER" IN MASTER_ORDER
      AND EXISTS
        (SELECT 1
        FROM
          (SELECT SUBSTR(ELEMENT_VALUE, 1, DECODE(INSTR(ELEMENT_VALUE, ':'), 0, L ENGTH(ELEMENT_VALUE) + 1, INSTR(ELEMENT_VALUE, ':')) - 1) AS ELEMENT
          FROM CR_STRUCTURE_VALUES2
          WHERE STRUCTURE_ID       = 2
          AND DETAIL_BUDGET        = 1
          AND STATUS               = 1
          AND UPPER(PARENT_VALUE) IN ('ELECTRIC ALL OTHER','ELECTRIC COR')
          MINUS
          SELECT SUBSTR(ELEMENT_VALUE, 1, DECODE(INSTR(ELEMENT_VALUE, ':'), 0, LENGTH(ELEMENT_VALUE) + 1, INSTR(ELEMENT_VALUE, ':')) - 1) AS ELEME NT
          FROM CR_STRUCTURE_VALUES2
          WHERE STRUCTURE_ID      = 9
          AND DETAIL_BUDGET       = 1
          AND STATUS              = 1
          AND UPPER(PARENT_VALUE) = 'A&G OH ORDER EXCLUSION'
          ) Z
        WHERE Z.ELEMENT = MASTER_ORDER
        )
      AND "GL_ACCOUNT"   <> '91081001'
      AND "COST_ELEMENT" IN COST_ELEMENT
      AND EXISTS
        (SELECT 1
        FROM CR_ST RUCTURE_VALUES2 A
        WHERE A.STRUCTURE_ID = 5
        AND A.DETAIL_BUDGET  =1
        AND A.STATUS         = 1
        AND COST_ELEMENT     = A.ELEMENT_VALUE
        )
      AND "GL_ACCOUNT" NOT IN ('5100000','5325000','5327000')
      AND "SOURCE_ID"      <> '7' )
      GROUP BY "COMPANY",
        "GL_ACCOUNT",
        "COST_CENTER",
        "PROFIT_CENTER",
        "MASTER_ORDER",
        "FUNDING_PROJECT",
        "POSTING_COST_CENTER",
        "ORDER_NUMBER",
        "ORIG_COST_ELEMENT",
        "ORIG_COST_CENTER",
        "ORIG_PROFIT_CENTER",
        "TRADING_PARTNER",
        "WORK_ORDER_NUMBER",
        month_number
      )
    
    

    Enjoy your first answer on this.

    Thank you and best regards,

    Murali

    Option 1:

    You run with two different ORACLE_HOMEs - that is potentially two different copies of the Oracle executable to the patch different sets?

    Option 2:

    A change of size of SGA is unlikely to directly affect the execution plan, but it also has change the size of the PGA TOUR at the same time? A change in the pga_aggregate_target could affect the choice of the mechanism of the join optimizer. (But not to change an in a join; but hash semi-join to nested loop is possible).

    Possibility 3:

    The db_file_multiblock_read_count leaves then the size that oracle defines by default depends on the db_cache_size divided by process; so, if you have reduced the sga_target_size you (implicitly or explicitly, no doubt) reduced the db_cache_size, and if you don't reduce the process in the same way, then the default db_file_multiblock_read_count been reduced. What you did on your system stats, this could change the cost of (for example) full tablescans, which could lead to a change in execution plan.

    It would be useful to see the results of a call to explain the plan / dbms_xplan.display in both cases so that we can see the variation in estimates of Oracle.

    Concerning

    Jonathan Lewis

  • Help setting up a SQL query with poor performance

    Hi all

    Database version: 10.2.0.5

    I'm working on a new report to view the top users by the number of calls. The table is truncated and filled again every month with records for the previous month; It contains approximately 400 000 records.

    I created a view with the columns needed for the report; also, the two functions of view calls to determine if a phone number is assigned to multiple staffs or several departments.

    It's full again table every month:

     CREATE TABLE "VOIP"."MONTHLY_BILLING_DETAILS" 
       (    "ID" NUMBER NOT NULL ENABLE, 
        "CDRRECORDTYPE" NUMBER, 
        "G_CALLMANAGERID" NUMBER, 
        "G_CALLID" NUMBER, 
        "O_LEGCALLIDENTIFIER" NUMBER, 
        "DATETIMEORIGINATION" NUMBER, 
        "O_NODEID" NUMBER, 
        "O_SPAN" NUMBER, 
        "O_IPADDR" NUMBER, 
        "CALLINGPARTYNUMBER" VARCHAR2(50 BYTE) NOT NULL ENABLE, 
        "CALLINGPARTY_USERID" VARCHAR2(128 BYTE), 
        "O_CAUSE_LOCATION" NUMBER, 
        "O_CAUSE_VALUE" NUMBER, 
        "O_PRECEDENCELEVEL" NUMBER, 
        "O_MEDIATRANSPORTADDR_IP" NUMBER, 
        "O_MEDIATRANSPORTADDR_PORT" NUMBER, 
        "O_MCAP_PAYLOADCAPABILITY" NUMBER, 
        "O_MCAP_MAXFRAMESPERPACKET" NUMBER, 
        "O_MCAP_G723BITRATE" NUMBER, 
        "O_VCAP_CODEC" NUMBER, 
        "O_VCAP_BANDWIDTH" NUMBER, 
        "O_VCAP_RESOLUTION" NUMBER, 
        "O_VIDEOTRANSPORTADDR_IP" NUMBER, 
        "O_VIDEOTRANSPORTADDR_PORT" NUMBER, 
        "O_RSVPAUDIOSTAT" VARCHAR2(64 BYTE), 
        "O_RSVPVIDEOSTAT" VARCHAR2(64 BYTE), 
        "DESTLEGIDENTIFIER" NUMBER, 
        "DESTNODEID" NUMBER, 
        "DESTSPAN" NUMBER, 
        "DESTIPADDR" NUMBER, 
        "ORIGINALCALLEDPARTYNUMBER" VARCHAR2(50 BYTE), 
        "FINALC_PARTYNUMBER" VARCHAR2(50 BYTE), 
        "FINALC_PARTY_USERID" VARCHAR2(128 BYTE), 
        "DESTCAUSE_LOCATION" NUMBER, 
        "DESTCAUSE_VALUE" NUMBER, 
        "DESTPRECEDENCELEVEL" NUMBER, 
        "DESTMEDIATRANSPORTADDR_IP" NUMBER, 
        "DESTMEDIATRANSPORTADDR_PORT" NUMBER, 
        "DESTMCAP_PAYLOADCAPABILITY" NUMBER, 
        "DESTMCAP_MAXFRAMESPERPACKET" NUMBER, 
        "DESTMCAP_G723BITRATE" NUMBER, 
        "DV_CAP_CODEC" NUMBER, 
        "DV_CAP_BANDWIDTH" NUMBER, 
        "DV_CAP_RESOLUTION" NUMBER, 
        "DV_TRANSPORTADDR_IP" NUMBER, 
        "DV_TRANSPORTADDR_PORT" NUMBER, 
        "DESTRSVPAUDIOSTAT" VARCHAR2(64 BYTE), 
        "DESTRSVPVIDEOSTAT" VARCHAR2(64 BYTE), 
        "DATETIMECONNECT" NUMBER, 
        "DATETIMEDISCONNECT" NUMBER, 
        "LASTREDIRECTDN" VARCHAR2(50 BYTE), 
        "PKID" VARCHAR2(4000 BYTE), 
        "O_INALCALLEDPARTYNUM_PARTITION" VARCHAR2(50 BYTE), 
        "CALLINGPARTYNUM_PARTITION" VARCHAR2(50 BYTE), 
        "FINALC_PARTYNUM_PARTITION" VARCHAR2(50 BYTE), 
        "LASTREDIRECTDNPARTITION" VARCHAR2(50 BYTE), 
        "DURATION" NUMBER, 
        "O_DEVICENAME" VARCHAR2(129 BYTE), 
        "DESTDEVICENAME" VARCHAR2(129 BYTE), 
        "O_CALLTERMINATION_BEHALF" NUMBER, 
        "DESTCALLTERMINATION_BEHALF" NUMBER, 
        "O_CALLEDPARTYREDIRECT_BEHALF" NUMBER, 
        "LASTREDIRECTREDIRECT_BEHALF" NUMBER, 
        "O_CALLEDPARTYREDIRECTREASON" NUMBER, 
        "LASTREDIRECTREDIRECTREASON" NUMBER, 
        "DESTCONVERSATIONID" NUMBER, 
        "G_CALLID_CLUSTERID" VARCHAR2(50 BYTE), 
        "JOIN_BEHALF" NUMBER, 
        "COMMENTS" VARCHAR2(2048 BYTE), 
        "AUTHCODEDESCRIPTION" VARCHAR2(50 BYTE), 
        "AUTHORIZATIONLEVEL" NUMBER, 
        "CLIENTMATTERCODE" VARCHAR2(32 BYTE), 
        "O_DTMFMETHOD" NUMBER, 
        "DESTDTMFMETHOD" NUMBER, 
        "CALLSECUREDSTATUS" NUMBER, 
        "O_CONVERSATIONID" NUMBER, 
        "O_MCAP_BANDWIDTH" NUMBER, 
        "DESTMCAP_BANDWIDTH" NUMBER, 
        "AUTHORIZATIONCODEVALUE" VARCHAR2(32 BYTE), 
        "OUTPULSEDCALLINGPARTYNUMBER" VARCHAR2(50 BYTE), 
        "OUTPULSEDCALLEDPARTYNUMBER" VARCHAR2(50 BYTE), 
        "O_IPV4V6ADDR" VARCHAR2(64 BYTE), 
        "DESTIPV4V6ADDR" VARCHAR2(64 BYTE), 
        "O_VCAP_CODEC_CHAN2" NUMBER, 
        "O_VCAP_BANDWIDTH_CHAN2" NUMBER, 
        "O_VCAP_RESOLUTION_CHAN2" NUMBER, 
        "O_V_TRANSPORTADDR_IP_CHAN2" NUMBER, 
        "O_V_TRANSPORTADDR_PORT_CHAN2" NUMBER, 
        "O_V_OCHANNEL_ROLE_CHAN2" NUMBER, 
        "DV_CAP_CODEC_CHAN2" NUMBER, 
        "DV_CAP_BANDWIDTH_CHAN2" NUMBER, 
        "DV_CAP_RESOLUTION_CHAN2" NUMBER, 
        "DV_TRANSPORTADDR_IP_CHAN2" NUMBER, 
        "DV_TRANSPORTADDR_PORT_CHAN2" NUMBER, 
        "DV_CHANNEL_ROLE_CHAN2" NUMBER, 
        "DATE_CREATED" DATE, 
        "DATETIME_CONNECT" DATE, 
        "DATETIME_DISCONNECT" DATE, 
        "USERID_EMAIL_ADDRESS" VARCHAR2(100 BYTE), 
        "FROM_FULL_TELEPHONE" VARCHAR2(20 BYTE), 
        "TO_FULL_TELEPHONE" VARCHAR2(20 BYTE), 
        "FROM_EXCHANGE" VARCHAR2(7 BYTE), 
        "TO_EXCHANGE" VARCHAR2(20 BYTE), 
        "FROM_CITY" VARCHAR2(200 BYTE), 
        "FROM_STATE" VARCHAR2(2 BYTE), 
        "TO_CITY" VARCHAR2(200 BYTE), 
        "TO_STATE" VARCHAR2(2 BYTE), 
        "CALL_TYPE" VARCHAR2(10 BYTE), 
         CONSTRAINT "MONTHLY_BILLING_PK" PRIMARY KEY ("ID")
      USING INDEX PCTFREE 10 INITRANS 2 MAXTRANS 255 COMPUTE STATISTICS 
      STORAGE(INITIAL 3145728 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
      PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT)
      TABLESPACE "VOIPDATA"  ENABLE
       ) PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 NOCOMPRESS LOGGING
      STORAGE(INITIAL 75497472 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
      PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT)
      TABLESPACE "VOIPDATA" ;
    
    
      CREATE INDEX "VOIP"."MONTHLY_BILL_INDEX1" ON "VOIP"."MONTHLY_BILLING_DETAILS" (TRUNC("DATETIME_CONNECT")) 
      PCTFREE 10 INITRANS 2 MAXTRANS 255 COMPUTE STATISTICS 
      STORAGE(INITIAL 4194304 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
      PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT)
      TABLESPACE "VOIPDATA" ;
    
    
      CREATE INDEX "VOIP"."MONTHLY_BILL_INDEX10" ON "VOIP"."MONTHLY_BILLING_DETAILS" ("CALL_TYPE") 
      PCTFREE 10 INITRANS 2 MAXTRANS 255 COMPUTE STATISTICS 
      STORAGE(INITIAL 4194304 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
      PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT)
      TABLESPACE "VOIPDATA" ;
    
    
      CREATE INDEX "VOIP"."MONTHLY_BILL_INDEX2" ON "VOIP"."MONTHLY_BILLING_DETAILS" ("FROM_EXCHANGE") 
      PCTFREE 10 INITRANS 2 MAXTRANS 255 COMPUTE STATISTICS 
      STORAGE(INITIAL 3145728 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
      PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT)
      TABLESPACE "VOIPDATA" ;
    
    
      CREATE INDEX "VOIP"."MONTHLY_BILL_INDEX3" ON "VOIP"."MONTHLY_BILLING_DETAILS" ("FROM_FULL_TELEPHONE", TRUNC("DATETIME_CONNECT")) 
      PCTFREE 10 INITRANS 2 MAXTRANS 255 COMPUTE STATISTICS 
      STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
      PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT)
      TABLESPACE "VOIPDATA" ;
    
    
      CREATE INDEX "VOIP"."MONTHLY_BILL_INDEX4" ON "VOIP"."MONTHLY_BILLING_DETAILS" ("DATETIME_CONNECT", NVL("FROM_FULL_TELEPHONE","CALLINGPARTYNUMBER")) 
      PCTFREE 10 INITRANS 2 MAXTRANS 255 COMPUTE STATISTICS 
      STORAGE(INITIAL 5242880 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
      PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT)
      TABLESPACE "VOIPDATA" ;
    
    
      CREATE INDEX "VOIP"."MONTHLY_BILL_INDEX5" ON "VOIP"."MONTHLY_BILLING_DETAILS" ("DATETIME_CONNECT", NVL("TO_FULL_TELEPHONE","ORIGINALCALLEDPARTYNUMBER")) 
      PCTFREE 10 INITRANS 2 MAXTRANS 255 COMPUTE STATISTICS 
      STORAGE(INITIAL 5242880 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
      PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT)
      TABLESPACE "VOIPDATA" ;
    
    
      CREATE INDEX "VOIP"."MONTHLY_BILL_INDEX6" ON "VOIP"."MONTHLY_BILLING_DETAILS" (TO_CHAR("DATETIME_CONNECT",'fmMONTH YYYY')) 
      PCTFREE 10 INITRANS 2 MAXTRANS 255 COMPUTE STATISTICS 
      STORAGE(INITIAL 4194304 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
      PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT)
      TABLESPACE "VOIPDATA" ;
    
    
      CREATE INDEX "VOIP"."MONTHLY_BILL_INDEX7" ON "VOIP"."MONTHLY_BILLING_DETAILS" ("TO_EXCHANGE") 
      PCTFREE 10 INITRANS 2 MAXTRANS 255 COMPUTE STATISTICS 
      STORAGE(INITIAL 3145728 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
      PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT)
      TABLESPACE "VOIPDATA" ;
    
    
      CREATE INDEX "VOIP"."MONTHLY_BILL_INDEX8" ON "VOIP"."MONTHLY_BILLING_DETAILS" (NVL("FROM_FULL_TELEPHONE","CALLINGPARTYNUMBER")) 
      PCTFREE 10 INITRANS 2 MAXTRANS 255 COMPUTE STATISTICS 
      STORAGE(INITIAL 4194304 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
      PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT)
      TABLESPACE "VOIPDATA" ;
    
    
      CREATE INDEX "VOIP"."MONTHLY_BILL_INDEX9" ON "VOIP"."MONTHLY_BILLING_DETAILS" ("DATETIME_CONNECT") 
      PCTFREE 10 INITRANS 2 MAXTRANS 255 COMPUTE STATISTICS 
      STORAGE(INITIAL 3145728 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
      PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT)
      TABLESPACE "VOIPDATA" ;
    

    These are the functions to determine if a phone number is assigned to multiple staffs or departments:

    FUNCTION GET_EMPLOYEE_NAME (P_FROM_FULL_TELEPHONE IN VARCHAR2)
    RETURN VARCHAR2
    AS
      L_NAME EMPLOYEES.NAME%TYPE;
    BEGIN
      SELECT NAME
      INTO L_NAME
      FROM EMPLOYEES
      WHERE WORK_PHONE_1_FORMAT = P_FROM_FULL_TELEPHONE;
      
      RETURN L_NAME;
    EXCEPTION
      WHEN TOO_MANY_ROWS THEN
        L_NAME := 'Multiple Employees';
        RETURN L_NAME;
      WHEN NO_DATA_FOUND THEN
        L_NAME := 'No Employee Assigned';
        RETURN L_NAME;
      WHEN OTHERS THEN
        NULL;
    END;
    

    FUNCTION GET_DEPARTMENT_NAME (P_FROM_FULL_TELEPHONE IN VARCHAR2)
    RETURN VARCHAR2
    AS
      L_DEPT_DESCR EMPLOYEES.DEPT_DESCR%TYPE;
    BEGIN
      SELECT DEPT_DESCR
      INTO L_DEPT_DESCR
      FROM EMPLOYEES
      WHERE WORK_PHONE_1_FORMAT = P_FROM_FULL_TELEPHONE;
      
      RETURN L_DEPT_DESCR;
    EXCEPTION
      WHEN TOO_MANY_ROWS THEN
        L_DEPT_DESCR := 'Multiple Departments';
        RETURN L_DEPT_DESCR;
      WHEN NO_DATA_FOUND THEN
        L_DEPT_DESCR := 'No Department Assigned';
        RETURN L_DEPT_DESCR;
      WHEN OTHERS THEN
        NULL;
    END;
    

    This is the point of view that I'll use in the report:

    CREATE OR REPLACE FORCE VIEW "VOIP"."TOP_USERS_BY_CALLS_V" ("TOP_NO", "EMPLOYEE_NAME", "EMPLOYEE_DEPARTMENT", "PHONE_NUMBER", "QUANTITY_CALLS") AS 
      SELECT
      ROWNUM,
      VOIP_PKG.GET_EMPLOYEE_NAME(FROM_FULL_TELEPHONE),
      VOIP_PKG.GET_DEPARTMENT_NAME(FROM_FULL_TELEPHONE),
      FROM_FULL_TELEPHONE,
      QUANTITY_CALLS
    FROM (
    SELECT
      MBD.FROM_FULL_TELEPHONE,
      COUNT(1) QUANTITY_CALLS
    FROM
      MONTHLY_BILLING_DETAILS MBD
    WHERE
      MBD.FROM_FULL_TELEPHONE IS NOT NULL                                     AND
      MBD.FROM_FULL_TELEPHONE <> '000-000-0000'                               AND
      LENGTH(MBD.FROM_FULL_TELEPHONE) = 12                                    AND
      LENGTH(MBD.TO_FULL_TELEPHONE) = 12                                      AND
      SUBSTR(MBD.TO_FULL_TELEPHONE,1,3) NOT IN (SELECT AREA_CODE
                                                FROM NYNJ_METRO_AREA_CODES)   AND
      SUBSTR(MBD.TO_FULL_TELEPHONE,1,3) NOT IN ('800','822','833','844',
                                                '855','866','877','888')
    GROUP BY
      MBD.FROM_FULL_TELEPHONE
    ORDER BY
      QUANTITY_CALLS DESC
    )
    WHERE ROWNUM <= 100;
    

    Explain Plan output and Extended SQL Trace:


    SQL> 
    SQL> show parameter user_dump_dest
    
    NAME                                 TYPE        VALUE
    ------------------------------------ ----------- ------------------------------
    user_dump_dest                       string      D:\ORACLEHOMES\ADMIN\RTS9\UDUM
                                                     P
    SQL> 
    SQL> show parameter optimizer
    
    NAME                                 TYPE        VALUE
    ------------------------------------ ----------- ------------------------------
    optimizer_dynamic_sampling           integer     2
    optimizer_features_enable            string      10.2.0.5
    optimizer_index_caching              integer     0
    optimizer_index_cost_adj             integer     100
    optimizer_mode                       string      ALL_ROWS
    optimizer_secure_view_merging        boolean     TRUE
    SQL> 
    SQL> show parameter db_file_multi
    
    NAME                                 TYPE        VALUE
    ------------------------------------ ----------- ------------------------------
    db_file_multiblock_read_count        integer     16
    SQL> 
    SQL> show parameter db_block_size
    
    NAME                                 TYPE        VALUE
    ------------------------------------ ----------- ------------------------------
    db_block_size                        integer     8192
    SQL> 
    SQL> show parameter cursor_sharing
    
    NAME                                 TYPE        VALUE
    ------------------------------------ ----------- ------------------------------
    cursor_sharing                       string      EXACT
    SQL> 
    SQL> column sname format a20
    SQL> column pname format a20
    SQL> column pval2 format a20
    SQL> 
    SQL> select
      2  sname
      3  , pname
      4  , pval1
      5  , pval2
      6  from
      7  sys.aux_stats$;
    
    SNAME                PNAME                     PVAL1 PVAL2
    -------------------- -------------------- ---------- --------------------
    SYSSTATS_INFO        STATUS                          COMPLETED
    SYSSTATS_INFO        DSTART                          02-09-2009 15:46
    SYSSTATS_INFO        DSTOP                           02-09-2009 15:46
    SYSSTATS_INFO        FLAGS                         1
    SYSSTATS_MAIN        CPUSPEEDNW            1259.6206
    SYSSTATS_MAIN        IOSEEKTIM                    10
    SYSSTATS_MAIN        IOTFRSPEED                 4096
    SYSSTATS_MAIN        SREADTIM
    SYSSTATS_MAIN        MREADTIM
    SYSSTATS_MAIN        CPUSPEED
    SYSSTATS_MAIN        MBRC
    SYSSTATS_MAIN        MAXTHR
    SYSSTATS_MAIN        SLAVETHR
    
    13 rows selected.
    
    Elapsed: 00:00:00.03
    SQL> 
    SQL> explain plan for
      2  SELECT
      3    TOP_NO,
      4    EMPLOYEE_NAME,
      5    EMPLOYEE_DEPARTMENT,
      6    PHONE_NUMBER,
      7    QUANTITY_CALLS
      8  FROM
      9    TOP_USERS_BY_CALLS_V
     10  ORDER BY
     11    QUANTITY_CALLS DESC;
    
    Explained.
    
    Elapsed: 00:00:00.18
    SQL> 
    SQL> select * from table(dbms_xplan.display);
    
    PLAN_TABLE_OUTPUT
    ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
    Plan hash value: 826236322
    
    ----------------------------------------------------------------------------------------------------------------
    | Id  | Operation                          | Name                      | Rows  | Bytes | Cost (%CPU)| Time     |
    ----------------------------------------------------------------------------------------------------------------
    |   0 | SELECT STATEMENT                   |                           |     1 |  4042 |  1313   (1)| 00:00:16 |
    |   1 |  SORT ORDER BY                     |                           |     1 |  4042 |  1313   (1)| 00:00:16 |
    |   2 |   VIEW                             | TOP_USERS_BY_CALLS_V      |     1 |  4042 |  1312   (1)| 00:00:16 |
    |*  3 |    COUNT STOPKEY                   |                           |       |       |            |          |
    |   4 |     VIEW                           |                           |     1 |    25 |  1312   (1)| 00:00:16 |
    |*  5 |      SORT ORDER BY STOPKEY         |                           |     1 |    26 |  1312   (1)| 00:00:16 |
    |   6 |       HASH GROUP BY                |                           |     1 |    26 |  1312   (1)| 00:00:16 |
    |*  7 |        FILTER                      |                           |       |       |            |          |
    |*  8 |         TABLE ACCESS BY INDEX ROWID| MONTHLY_BILLING_DETAILS   |     1 |    26 |  1310   (1)| 00:00:16 |
    |*  9 |          INDEX FULL SCAN           | MONTHLY_BILL_INDEX3       |   934 |       |   449   (1)| 00:00:06 |
    |* 10 |         INDEX FULL SCAN            | NYNJ_METRO_AREA_CODES_UK1 |     1 |     4 |     1   (0)| 00:00:01 |
    ----------------------------------------------------------------------------------------------------------------
    
    Predicate Information (identified by operation id):
    ---------------------------------------------------
    
       3 - filter(ROWNUM<=100)
       5 - filter(ROWNUM<=100)
       7 - filter( NOT EXISTS (SELECT 0 FROM VOIP."NYNJ_METRO_AREA_CODES" "NYNJ_METRO_AREA_CODES" WHERE
                  LNNVL("AREA_CODE"<>SUBSTR(:B1,1,3))))
       8 - filter(LENGTH("MBD"."TO_FULL_TELEPHONE")=12 AND SUBSTR("MBD"."TO_FULL_TELEPHONE",1,3)<>'800' AND
                  SUBSTR("MBD"."TO_FULL_TELEPHONE",1,3)<>'822' AND SUBSTR("MBD"."TO_FULL_TELEPHONE",1,3)<>'833' AND
                  SUBSTR("MBD"."TO_FULL_TELEPHONE",1,3)<>'844' AND SUBSTR("MBD"."TO_FULL_TELEPHONE",1,3)<>'855' AND
                  SUBSTR("MBD"."TO_FULL_TELEPHONE",1,3)<>'866' AND SUBSTR("MBD"."TO_FULL_TELEPHONE",1,3)<>'877' AND
                  SUBSTR("MBD"."TO_FULL_TELEPHONE",1,3)<>'888')
       9 - filter(LENGTH("MBD"."FROM_FULL_TELEPHONE")=12 AND "MBD"."FROM_FULL_TELEPHONE"<>'000-000-0000'
                  AND "MBD"."FROM_FULL_TELEPHONE" IS NOT NULL)
      10 - filter(LNNVL("AREA_CODE"<>SUBSTR(:B1,1,3)))
    
    33 rows selected.
    
    Elapsed: 00:00:00.82
    SQL> 
    SQL> rollback;
    
    Rollback complete.
    
    Elapsed: 00:00:00.00
    SQL> 
    SQL> set autotrace traceonly arraysize 100
    SQL> 
    SQL> alter session set tracefile_identifier = 'mytrace1';
    
    Session altered.
    
    Elapsed: 00:00:00.01
    SQL> 
    SQL> alter session set events '10046 trace name context forever, level 8';
    
    Session altered.
    
    Elapsed: 00:00:00.15
    SQL> 
    SQL> SELECT
      2    TOP_NO,
      3    EMPLOYEE_NAME,
      4    EMPLOYEE_DEPARTMENT,
      5    PHONE_NUMBER,
      6    QUANTITY_CALLS
      7  FROM
      8    TOP_USERS_BY_CALLS_V
      9  ORDER BY
     10    QUANTITY_CALLS DESC;
    
    100 rows selected.
    
    Elapsed: 00:10:37.68
    
    Execution Plan
    ----------------------------------------------------------
    Plan hash value: 826236322
    
    ----------------------------------------------------------------------------------------------------------------
    | Id  | Operation                          | Name                      | Rows  | Bytes | Cost (%CPU)| Time     |
    ----------------------------------------------------------------------------------------------------------------
    |   0 | SELECT STATEMENT                   |                           |     1 |  4042 |  1313   (1)| 00:00:16 |
    |   1 |  SORT ORDER BY                     |                           |     1 |  4042 |  1313   (1)| 00:00:16 |
    |   2 |   VIEW                             | TOP_USERS_BY_CALLS_V      |     1 |  4042 |  1312   (1)| 00:00:16 |
    |*  3 |    COUNT STOPKEY                   |                           |       |       |            |          |
    |   4 |     VIEW                           |                           |     1 |    25 |  1312   (1)| 00:00:16 |
    |*  5 |      SORT ORDER BY STOPKEY         |                           |     1 |    26 |  1312   (1)| 00:00:16 |
    |   6 |       HASH GROUP BY                |                           |     1 |    26 |  1312   (1)| 00:00:16 |
    |*  7 |        FILTER                      |                           |       |       |            |          |
    |*  8 |         TABLE ACCESS BY INDEX ROWID| MONTHLY_BILLING_DETAILS   |     1 |    26 |  1310   (1)| 00:00:16 |
    |*  9 |          INDEX FULL SCAN           | MONTHLY_BILL_INDEX3       |   934 |       |   449   (1)| 00:00:06 |
    |* 10 |         INDEX FULL SCAN            | NYNJ_METRO_AREA_CODES_UK1 |     1 |     4 |     1   (0)| 00:00:01 |
    ----------------------------------------------------------------------------------------------------------------
    
    Predicate Information (identified by operation id):
    ---------------------------------------------------
    
       3 - filter(ROWNUM<=100)
       5 - filter(ROWNUM<=100)
       7 - filter( NOT EXISTS (SELECT 0 FROM VOIP."NYNJ_METRO_AREA_CODES" "NYNJ_METRO_AREA_CODES" WHERE
                  LNNVL("AREA_CODE"<>SUBSTR(:B1,1,3))))
       8 - filter(LENGTH("MBD"."TO_FULL_TELEPHONE")=12 AND SUBSTR("MBD"."TO_FULL_TELEPHONE",1,3)<>'800' AND
                  SUBSTR("MBD"."TO_FULL_TELEPHONE",1,3)<>'822' AND SUBSTR("MBD"."TO_FULL_TELEPHONE",1,3)<>'833' AND
                  SUBSTR("MBD"."TO_FULL_TELEPHONE",1,3)<>'844' AND SUBSTR("MBD"."TO_FULL_TELEPHONE",1,3)<>'855' AND
                  SUBSTR("MBD"."TO_FULL_TELEPHONE",1,3)<>'866' AND SUBSTR("MBD"."TO_FULL_TELEPHONE",1,3)<>'877' AND
                  SUBSTR("MBD"."TO_FULL_TELEPHONE",1,3)<>'888')
       9 - filter(LENGTH("MBD"."FROM_FULL_TELEPHONE")=12 AND "MBD"."FROM_FULL_TELEPHONE"<>'000-000-0000'
                  AND "MBD"."FROM_FULL_TELEPHONE" IS NOT NULL)
      10 - filter(LNNVL("AREA_CODE"<>SUBSTR(:B1,1,3)))
    
    
    Statistics
    ----------------------------------------------------------
            365  recursive calls
              0  db block gets
         689543  consistent gets
         212906  physical reads
              0  redo size
           5984  bytes sent via SQL*Net to client
            400  bytes received via SQL*Net from client
              2  SQL*Net roundtrips to/from client
              2  sorts (memory)
              0  sorts (disk)
            100  rows processed
    
    SQL> 
    SQL> disconnect
    

    Part of the automatic trace output:

    SELECT
      TOP_NO,
      EMPLOYEE_NAME,
      EMPLOYEE_DEPARTMENT,
      PHONE_NUMBER,
      QUANTITY_CALLS
    FROM
      TOP_USERS_BY_CALLS_V
    ORDER BY
      QUANTITY_CALLS DESC
    
    call     count       cpu    elapsed       disk      query    current        rows
    ------- ------  -------- ---------- ---------- ---------- ----------  ----------
    Parse        1      0.00       0.43          0          0          0           0
    Execute      1      0.00       0.00          0          0          0           0
    Fetch        2     24.70     635.81     212587     631823          0         100
    ------- ------  -------- ---------- ---------- ---------- ----------  ----------
    total        4     24.70     636.25     212587     631823          0         100
    
    Misses in library cache during parse: 1
    Optimizer mode: ALL_ROWS
    Parsing user id: 148  
    
    Rows     Row Source Operation
    -------  ---------------------------------------------------
        100  SORT ORDER BY (cr=689531 pr=212900 pw=0 time=636823070 us)
        100   VIEW  TOP_USERS_BY_CALLS_V (cr=689531 pr=212900 pw=0 time=642681672 us)
        100    COUNT STOPKEY (cr=631823 pr=212587 pw=0 time=635667026 us)
        100     VIEW  (cr=631823 pr=212587 pw=0 time=635666810 us)
        100      SORT ORDER BY STOPKEY (cr=631823 pr=212587 pw=0 time=635666493 us)
       2512       HASH GROUP BY (cr=631823 pr=212587 pw=0 time=635666125 us)
      27112        FILTER  (cr=631823 pr=212587 pw=0 time=519230237 us)
     315563         TABLE ACCESS BY INDEX ROWID MONTHLY_BILLING_DETAILS (cr=381523 pr=212587 pw=0 time=580209555 us)
     394473          INDEX FULL SCAN MONTHLY_BILL_INDEX3 (cr=2679 pr=2679 pw=0 time=26793918 us)(object id 206675)
     226627         INDEX FULL SCAN NYNJ_METRO_AREA_CODES_UK1 (cr=250300 pr=0 pw=0 time=3575488 us)(object id 206605)
    
    
    Elapsed times include waiting on following events:
      Event waited on                             Times   Max. Wait  Total Waited
      ----------------------------------------   Waited  ----------  ------------
      SQL*Net message to client                       2        0.00          0.00
      db file sequential read                    212587        0.20        611.67
      SQL*Net message from client                     2        0.00          0.00
      SQL*Net more data to client                     2        0.00          0.00
    ********************************************************************************
    

    DBMS_XPLAN. Output DISPLAY_CURSOR:

    SQL> 
    SQL> select * from table(dbms_xplan.display_cursor(null, null, 'ALLSTATS LAST'));
    
    PLAN_TABLE_OUTPUT
    ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
    SQL_ID  1ut636vt58jdw, child number 0
    -------------------------------------
    SELECT /*+ gather_plan_statistics */   TOP_NO,   EMPLOYEE_NAME,   EMPLOYEE_DEPARTMENT,   PHONE_NUMBER,   QUANTITY_CALLS FROM   TOP_USERS_BY_CALLS_V
    ORDER BY   QUANTITY_CALLS DESC
    
    Plan hash value: 826236322
    
    --------------------------------------------------------------------------------------------------------------------------------------------------------------
    | Id  | Operation                          | Name                      | Starts | E-Rows | A-Rows |   A-Time   | Buffers | Reads  |  OMem |  1Mem | Used-Mem |
    --------------------------------------------------------------------------------------------------------------------------------------------------------------
    |   0 | SELECT STATEMENT                   |                           |      1 |        |    100 |00:09:56.06 |     689K|    210K|       |       |          |
    |   1 |  SORT ORDER BY                     |                           |      1 |      1 |    100 |00:09:56.06 |     689K|    210K| 13312 | 13312 |12288  (0)|
    |   2 |   VIEW                             | TOP_USERS_BY_CALLS_V      |      1 |      1 |    100 |00:10:04.98 |     689K|    210K|       |       |          |
    |*  3 |    COUNT STOPKEY                   |                           |      1 |        |    100 |00:09:54.89 |     631K|    210K|       |       |          |
    |   4 |     VIEW                           |                           |      1 |      1 |    100 |00:09:54.89 |     631K|    210K|       |       |          |
    |*  5 |      SORT ORDER BY STOPKEY         |                           |      1 |      1 |    100 |00:09:54.88 |     631K|    210K|  6144 |  6144 | 6144  (0)|
    |   6 |       HASH GROUP BY                |                           |      1 |      1 |   2512 |00:09:54.88 |     631K|    210K|   821K|   821K| 1153K (0)|
    |*  7 |        FILTER                      |                           |      1 |        |  27112 |00:08:58.57 |     631K|    210K|       |       |          |
    |*  8 |         TABLE ACCESS BY INDEX ROWID| MONTHLY_BILLING_DETAILS   |      1 |      1 |    315K|00:08:57.07 |     381K|    210K|       |       |          |
    |*  9 |          INDEX FULL SCAN           | MONTHLY_BILL_INDEX3       |      1 |    934 |    394K|00:00:23.02 |    2679 |   2679 |       |       |          |
    |* 10 |         INDEX FULL SCAN            | NYNJ_METRO_AREA_CODES_UK1 |    250K|      1 |    226K|00:00:03.47 |     250K|      0 |       |       |          |
    --------------------------------------------------------------------------------------------------------------------------------------------------------------
    
    Predicate Information (identified by operation id):
    ---------------------------------------------------
    
       3 - filter(ROWNUM<=100)
       5 - filter(ROWNUM<=100)
       7 - filter( IS NULL)
       8 - filter((LENGTH("MBD"."TO_FULL_TELEPHONE")=12 AND SUBSTR("MBD"."TO_FULL_TELEPHONE",1,3)<>'800' AND SUBSTR("MBD"."TO_FULL_TELEPHONE",1,3)<>'822'
                  AND SUBSTR("MBD"."TO_FULL_TELEPHONE",1,3)<>'833' AND SUBSTR("MBD"."TO_FULL_TELEPHONE",1,3)<>'844' AND SUBSTR("MBD"."TO_FULL_TELEPHONE",1,3)<>'855'
                  AND SUBSTR("MBD"."TO_FULL_TELEPHONE",1,3)<>'866' AND SUBSTR("MBD"."TO_FULL_TELEPHONE",1,3)<>'877' AND SUBSTR("MBD"."TO_FULL_TELEPHONE",1,3)<>'888'))
       9 - filter((LENGTH("MBD"."FROM_FULL_TELEPHONE")=12 AND "MBD"."FROM_FULL_TELEPHONE"<>'000-000-0000' AND "MBD"."FROM_FULL_TELEPHONE" IS NOT NULL))
      10 - filter(LNNVL("AREA_CODE"<>SUBSTR(:B1,1,3)))
    
    
    35 rows selected.
    
    Elapsed: 00:00:00.50
    SQL> 
    SQL> spool off
    
    

    Any help will be greatly appreciated. Please let me know if you need additional information.

    Thank you

    Erick

    ediazjorge wrote:

    Please let me know if you need additional information or do additional tests.

    Thanks again!

    Erick

    It's to you if you are satisfied or interested in improvements (if possible).

    If so the first thing I would like if you had your refreshed perspective as advised. According to expected area_code table cardinalities I doubt.

    So, if not cool off with dbms_stats.gather_table_stats on two tables, area_codes and MONTHLY_BILLING_DETAILS.

    Bottlenecks are now obviously the full table of MONTHLY_BILLING_DETAILS as well as the ANTI of LOOPS IMBRIQUEES scan.

    At the moment I don't think that an index of MONTHLY_BILLING_DETAILS will help a lot, because most of the lines will pass filter predicates, and because we need some columns in it, I have now I there will be gain a full index scan.

    I was surprissed that the optimizer pushes the substr <> predicates to both tables.

    So depending on your data, you might try

    1 make a factory of subquery select the two MONTHLY_BILLING_DETAILS columns that all directly apply predicates of membership and use it directly in the join instead of the table.

    or

    2. If all subtr to so are part of the table area_code choose in it using a subquery (or inline view) plant excluding these values.

    Both are attempts to get rid of the substr excluding as filters of join predicates.

    In fact, I was expecting a hash join anti as shown in the plan to explain instead of the nested loops anti, I expect to be more effective in this case.

    Perhaps with correct cardinalities the optimizier would understand himself.

    Just to test it, you can try the use_hash hint in the join:

    Select / * + USE_HASH (MBD, one) * /.

    ..

    OF MONTHLY_BILLING_DETAILS MBD,.

    NYNJ_METRO_AREA_CODES one

    (It's a good habit anyway usually use aliases and precede the names of columns. In the, it is easier to read queries are only trivial).

  • Calculate the elapsed time between the horodateurs log Table

    Hello

    I'm looking for some codes SQL allows to calculate the elapsed time between the timestamps in a log table.  The log table has some STOP-START operations.

    I just want to calculate the elapsed time between the START and PAUSE of Transactions, as well as START and EXECUTE transactions.

    So, in the example below, the time spent must be:

    START 09:15 break 09:20 (5 Minutes)
    START 09:30 to 09:45 (15 Minutes) FULL

    Total elapsed time for LOG_ID 1234 should be 20 minutes.  This excludes the 09:20 at 09:30 BREAK at the START time.

    LOG_ID

    SEQ_NUM

    LOG_TYPE_CD

    CRE_DTTM

    1234

    1

    BEGINNING

    09-15 - 2013:09:15:00

    1234

    2

    BREAK

    09-15 - 2013:09:20:00

    1234

    3

    BEGINNING

    09-15 - 2013:09:30:00

    1234

    4

    ALL THE

    09-15 - 2013:09:45:00

    Any suggestions?

    Thanks for your time

    -DT

    Hello

    Thanks for posting the CREATE TABLE and INSERT.  be sure to post the results desired from these data.

    user13071913 wrote:

    Hi thanks for the help...

    The date is a true timestamp.  ...

    Here's a sample of CREATE TABLE and a few inserts.  3 ID transaction, each with a series of journal entries.

    CREATE TABLE 'LOG_TABLE_X '.

    (SELECT 'ID' CHAR (14 BYTES) NOT NULL,)

    ACTIVATE THE "LOG_TYPE_FLG" TANK (4 BYTES) NOT NULL,

    ALLOW "LOG_DTTM" DATE NOT NULL

    );

    ...

    I'm so confused.  Is log_dttm a TIMESTAMP, you said in the story, or is it a DATE, as you say in the CREATE TABLE statement, or is it a VARCHAR2 as Thur INSERT statements?  I'll assume it's a DATE.

    I left out an important step yesterday.  The computation of the last_start, we need to use a CASE statement so that we record only the time of events STRT.

    Here's the revised query:

    WITH got_last_start AS

    (

    SELECT id, log_type_flg, log_dttm

    LAST_VALUE (CASE

    WHEN log_type_flg = "STRT".

    THEN log_dttm

    END

    IGNORES NULL VALUES

    ) OVER (PARTITION BY id - can - be

    ORDER BY log_dttm

    ) AS last_start

    OF log_table_x

    )

    SELECT id, log_type_flg, log_dttm

    , (log_dttm - last_start) * 24 * 60 elapsed

    , SUM (log_dttm - last_start) OVER (PARTITION BY ID.

    ORDER BY log_dttm

    ) * 24 * 60 AS total_elapsed

    OF got_last_start

    WHERE log_type_flg IN ("CMPT", "PAUS")

    ORDER BY id, log_dttm

    ;

    Output of your sample data:

    ID LOG_ ELAPSED TOTAL_ELAPSED LOG_DTTM

    -------------- ---- ------------------- -------- -------------

    1111 PAUS 09-26 - 2013:09:09:58.17.17

    1111 CMPT 09-26 - 2013:10:09:58 1.00.83

    2222 CMPT 09-26 - 2013:12:09:58 180.00 180.00

    3333 CMPT 09-26 - 2013:10:09:42 59.73 59.73

    In Oracle, when you subtract one DATE from another DATE, the result is the NUMBER of days between them.  In the above query, I multiplied the past columns and total_elapsed by the number of minutes per day (24 * 60), to show the time in minutes.

  • Elapsed time

    Hi guys, I use the elapsed time to set an expectation and to have, at the same time, the ability to stop waiting.

    The problem is that if for example I put on hold for 1 minute the first time everything works fine, but when I repeat the same operation (my VI is a state machine so I can put it in an idle state) something goes wrong... I tried to debug but I am sure that the problem is the elapsed time for two reasons: the first is that I have replaced it with wait function (ms) and it works correctly whenever I want, the second is that I put a flag on the time elapsed (s) and the first time, I see that he County/wait of 0 to 1 sec while the second time in automatic mode it goes to 5,46 without any account Countdown.

    I hope you can help me because it makes me crazy.

    Hello

    I joined again the VI version 2012

    I've also attached the snapshot and the snippet where you can not open the VI

    Best regards

    TuiTui

  • Elapsed time in flat sequence Frames

    I enclose a VI file simplified what I'm trying to do. Ideally, this program starts when "OK" is pressed and cross frames (or steps) to the time indicated as wait times. The program would then reset. It will be meant to time the experimental stages, possibly with release of equipment parameters. I wish I could have a direct timer for each step backwards (ideally) or to give elapsed time. I tried different variations, but nothing seems to give me a direct timer as I'm looking.

    This timer is not entirely necessary, it would be good to know where experience is the place to experience 50 hours that makes us turn.

    I am very new to LabVIEW, please excuse that requires the simplicity of the solution that it likely.

    As a simple state machine, it is trivial. See if the attached VI may give you some ideas.

    Note that since this is a state machine...

    • It can be stopped at any time. If you allow only stop in the slow case, don't wire in other cases.
    • No local variable!
    • No loops inside loops!
    • No sequence!
    • A unique array of clusters setting information specific to the State in one place. Nothing distributed across multiple locations.
    • All States timer reuse the same code, just with two values different (State and duration).
    • For more complex scenarios, you can add more flavors State.
    • Note that I use the output of waiting for the tick ms. (you can also use the number of cycles, but who would need a separate waiting)
    • Simple, scalable, and extensible code. Just add items to the enum and add corresponding cases.
    • modify if needed.
  • Elapsed time [new]

    Can Hi anyone help me on this please...

    Comments and suggestions are welcome.

    Kind regards

    NORWEGIAN KRONER

    Altenbach says:

    I still don't understand why you need two timers. You can remove the timer B and simply compare the elapsed time of A with B time goal and light the LED if the elapsed time is higher.

    I meant like that.

  • Model in the loop timed While the elapsed time

    Hello NOR community,

    I'm trying to use a while loop timed to run controller simulated for a mechanical system test. I need the time loop to run at an even 50 Hz to simulate the controller that will eventually drive the mechanical system. To check the speed at which the loop runs, I made a VI that gets a value from each loop clock and subtracts the value of the clock of the current iteration of the value of the clock of the previous iteration. I have eliminated all other codes this VI except for the recovery of the clock, to ensure that no problem with another code in VI. I find that the time between iterations is not constant, but it is consistent. In other words, the elapsed time can change at each loop, but it changes according to a specific model, such that the average elapsed time is equal to the value that I use for the timed loop. The loop will run faster than posed for several cycles, then slow down during a cycle even at the same time. Here are some examples:

    Running at 5 Hz: elapsed switches schedules between 0.203125 and 0,187500 seconds

    Clocked at 8 Hz: time is constantly 0.125 seconds.

    Operating at 10 Hz: elapsed switches schedules between 0,109375 and 0,093750 seconds

    By examining the differences between elapsed time and the stability of the 8 Hz setting, it seems that there is a minimum time of 0,015625 seconds (64 Hz) division. It is much worse than the 1ms accuracy claimed in documentation. This could be the cause?

    I am running Windows XP with LabVIEW version 8.5.1 and have observed this behavior on several computers with different screws

    Thank you!

    Erik

    Your problem is the function that you use to get the current time.  It's just the time of the Windows clock which has a resolution of 16 msec.

    You must use the function of number of cycles as Jarle has pointed out.

  • Elapsed timer

    Hello

    I'm doing this project in motion sensor. I got to work like when it detects a movement it will turn on the Boolean value has led. I'm so now suppose to add some kind of timer which some recommended the passage of time, I tried to find but I do not know how to connect to my program. My task is to set a timer, while 10 minutes elapsed, no movement is detected, it will trigger a logic 1 (digital input) to another program. But now I'm focusing on this program I need to integrate the two to the right. So, how do I do not connect to make as how I had described. And finally I need a reset for that button after it input 1 logic (which will trigger an alarm - another program) it can be reset to zero and count down 10 minutes still. Thank you

    First of all, you keep in your original thread.

    Then take the LabVIEW tutorials.

    LabVIEW Introduction course - 3 hours
    LabVIEW Introduction course - 6 hours

    Then, read the help file for the elapsed time function.

    Finally, set up a simple VI where you can experiment with how this function works.

  • different type of terminals of elapsed time of the DAQ assistant

    I connected a digital relay to one of the outputs. I have installation wizard DAQ to operate a valve with the relay. Now, I want to control the valve to drive all... .lets say 20 seconds, until I stop the program. What I need, is to change the State of each 20 seconds. I tried to use the "Out of time", but when I try to connect 'elapsed time' 'Data' on the ass of data acquisition. It reports on the different types of data. What would be the way easy and clean to use a "timer" to operate a relay on a basis of time fixed and periodic? Thanks in advance!

    I enclose a picture of my horrible test...

    I'm using Labview student 2009 edition.

    Put an is not in there also.

  • totalizer of time-elapsed time

    for those who can answer: is it possible that a "totalizer" elapsed time can be built? Im trying to implement a program that will measure the elapsed time a particular resistance will be on. Since the heating element will appear several times, the elapsed time must begin where he left off and continue to count until the next cycle, etc., if resistance is tested in a few months, the totalizer function will be very useful for FMEA (failure mode effects analysis) see the total time on the item was. IM using a structure of weather control box timer is active (true case) and a comparison function for the voltage at the output of a real or fake (0 = false, 120 Volt Volt = true). the timer\totalizer should operate only in the case of true.

    Here's an easy way to do it with registers at offset.

  • elapsed time after two output pulses

    I have a gas with an output signal meter (or perhaps more accurately, a closing contact) for each cubic foot, put in the meter. The tricky part is that the closing time varies over time as the gas flow increases.

    I am sucessfully measure the total volume of gas used in a 'run' by using a shift register to compare a change (closed or open) and divide the total by two changes. However, I would like to note the elapsed time for each foot cube through the meter and the putput that on-screen. This number should only be updated when each cubic foot passes through the meter. It's simple if it was just an impulse, or even two an amout set apart, but I have a problem with the irregularity.

    No matter if the timer has elapsed begins on the forehead or the edge down so it starts and ends at the same place and the inverse of this number is then displayed on the screen.

    My current control loop is a timed loop iterations to 250ms on a cRIO 9072.

    Any advice on how to implement or the display would be great!

    Hi, NXT,.

    detect the rising edges of your meter. Store the current time in a shift on rising register and get the difference to the previous hour:

  • Elapsed time delay does that once in the state machine

    Hello.  I have problems using the delay to show the seconds remaining on an expectation not in a simple state machine.  I have a front panel countdown indicating the time remaining for the step.  I thought that the delay of elapsed time was the way to do.  The problem is the vi work correctly the first time.  But then after that the calendar does not seem to reset at the time I had put.  If I remove the delay and just stick a waiting time in the State, the vi is exhausted because I expect.  This is just to give the user an idea of the time remaining.  What I missing when using the passage of time, or it's just the wrong tool for the job?

    A small question, is that I would like to move the tasks, in this case the LED outside of the loop, so I don't have to repeat the code.  But when I tried moving them outside with only allow constants within the State, they do not work as I expected.  If you have tasks such as operating a set of Boolean values that you are used in several States, what is the the cleaner way to do it without repeating the code?

    Thanks for the help.

    See how it works for you.

  • How to make the variable data record (intermittent time), with a real-time display

    I'm a complete newbie to Labview. We are currently developing a piece of hardware in the lab to automatically take the readings of the concentration of a sample, through correlations with voltage readings. I have read and worked through the getting started with Labview .pdf, but other than that my knowledge is minimal. I have a flowsheet of work who is able to do it correctly and display and write the data in real time. However, I want to be able to write to a file only every 10 minutes or so, since experiments can run for several days and the amount of data it currently logs is unnecessary.

    Would be nice if he could write it in columns like this:

    [date time]  [voltage ave]  [levels]

    xx                     xx                        xxx

    xx                     xx                        xxx

    xx                     xx                        xxx

    .. .but only once every 10 minutes. Or at any interval of time, I put.

    I tried to connect different parallel loops, but I failed miserably. I don't know if it is a relatively simple problem for you guys to help me with.

    I have attatched file. Please note that the file variables.txt is there simply to hold the settings for the correlation of concentration, which took charge of him.

    In addition, advice or tips to improve this would be greatly appreciated.

    Hi mooray.

    I took a quick look at your code, but you should be able to do something like this:

    When you have an Express VI elapsed time set to 600 seconds (10 minutes). If every 600 seconds time out will pass a Boolean TRUE, which will allow to write the measurement file Express VI. Therefore, what iteration of the while loop, you would write some input comes in the signal input to write it into a file position.

    There are other ways to do this as well, but it's pretty simple. I hope this helps!

    Thanks for choosing National instruments.

    Aaron P

    National Instruments

    Technical sales engineer

    http://www.NI.com/support

Maybe you are looking for

  • 32RL938G on CI +.

    I'm certain difficulties since installing the CI +, TV cable provider upc Romania. On the key flight + or flight - it changes the channels... The epg is unusable. I had to pull on the map + to be able to use the asa a monitor at least TV. It would lo

  • AutoFill does not work after last update 3-6-3

    AutoFill does not work after last update 3-6-3 is after update

  • Need two drivers of Windows XP Home for my Satellite A100 (PSAAN)

    Hi guys,. I am experiencing a small problem, I recently bought a second hand satellite A100 (laptop and charger only), that came preloaded with Vista home premium. the problem is that I need to run Windows XP on this machine. So I did what anyone els

  • 2121TU HP 2000 - RAM upgrade

    I am currently runinng on stock card and do not want to upgrade a lot on that laptop it is mainly for the office. This laptop comes with a 2 GB memory DDR3 (1600 MHZ according to the manufacturer's Web site) and is painfully slow with about 3 to 4 de

  • 2000 laptop, HP - spare battery?

    I'm kinda a failure when it comes to tech talk, so it's quite possible miss me just something in my research (if so - sorry and thanks for the help!). You wish to order a spare battery for my laptop HP 2000. I found batteries that are compatible with