Performance differences in the xmltable between data bases query, why?

I have this request:

SELECT x.seq_no,
       ITEM,
       STORE,
       PRIMARY_SUPPLIER,
       xt.STATUS,
       STYLE,
       VIRTUAL_IND,
       VIRTUAL_LOCATION,
       VIRTUAL_TO_LOC,
       USER_ID,
       to_date(YEAR || MONTH || DAY || HOUR || MINUTE || SECOND,
               'YYYYMMDDHH24MISS') EVENT_DATE,
       APPLICATION_INFO
  FROM DSA_SUB_ITEM_CONTROL x,
       xmltable('/ItemCreateFullDesc/ItemStoreFullDesc/ItemStoreDesc' passing
                xmltype.createXML(x.cmf) columns Item NUMBER path 'Item',
                Store NUMBER path 'Store',
                Primary_Supplier NUMBER path 'Primary_Supplier',
                Status VARCHAR2(1) path 'Status',
                Style NUMBER path 'Style',
                Virtual_Ind VARCHAR2(255) path 'Virtual_Ind',
                Virtual_Location NUMBER path 'Virtual_Location',
                Virtual_To_Loc VARCHAR2(1) path 'Virtual_To_Loc',
                User_Id VARCHAR2(255) path 'User_Id',
                YEAR VARCHAR2(4) path 'Event_Date/year',
                MONTH VARCHAR2(2) path 'Event_Date/month',
                DAY VARCHAR2(2) path 'Event_Date/day',
                hour VARCHAR2(2) path 'Event_Date/hour',
                minute VARCHAR2(2) path 'Event_Date/minute',
                SECOND VARCHAR2(2) path 'Event_Date/second',
                Application_Info VARCHAR2(255) path 'Application_Info') xt

That, for the same single line in the source table works in 10s, and other databases, I canceled after 4 min run. I think it has to do with the version of database because when the fastest is in 11.2.0.4 and all the others are in previous versions of 11.2.0.x, but I can't find anything about this, can anyone help?

There is also a different execution plan that I can't explain:

11.2.0.4

xml query fast.jpg

11.2.0.x

xml query slow.jpg

Any help to solve this problem or pointing to documents that explain why it's happening is appreciated.

Jason_ (A_Non) wrote:

Look at the DDL for the table in question between versions, through DBMS_METADATA. GET_DDL or your preferred approach.  In the 11.2.0.4 table, the XMLType column is stored in format XML BINARY SECUREFILE.  In the 11.2.0.x, it should be CLOB.  That would be the reason for the difference in performance.

Not necessarily.

Both could use CLOB storage option but only 11.2.0.4 leave can take advantage of the EVALUATION XMLTABLE operation. Otherwise, I guess that we would have seen an XPATH EVALUATION (streaming) operation in the plan when XML BINARY is used as storage type.

OP not to not use XMLType anyway

Reise,

You will have to migrate your XML column to XMLType (SECUREFILE BINARY XML) in order to match the performance that you download on 11.2.0.4.

There's no other choice.

Tags: Database

Similar Questions

  • component module (function) in the Toolbox of data base

    Hi, I have been using the Toolbox of data a lot, but I've never used a function of my Access database before.

    I have a function called "Work_Days" that takes two dates as Inparameters and calculate how many working days it is. This function is stored in the Modules section in Access.

    I have a working query I can run with access which looks like this:

    SELECT tblActiveCCU.ID, tblActiveCCU.DateReceived, tblActiveCCU.DateTransferred, Work_Days([DateReceived],[DateTransferred]) AS NetDays
    FROM tblActiveCCU
    WHERE (((tblActiveCCU.ID)=97));
    

    The output looks like this:

    ID   DateReceived    DateTransferred NetDays
    97  3/16/2016   3/30/2016   11
    

    Now to the question, how I implemented this request in LabView?

    In my attached code, I got a "syntax error" FROM clause


  • Bing Maps Australia does support American mapping. If so, performance depends on the distance between MS data centers in the United States?

    Some countries of Bing Maps support US better than others mapping... just trying to figure out why the same address would generate different responses in different countries...

    Bryan

    Thanks for visiting the site of the community of Microsoft Windows. The question you have posted is related to Bing Maps and would be better suited to the Bing community. Please visit the link below to find a community that will provide the support you want.
    http://www.bing.com/community/maps/f/12264.aspx
  • Script to determine the days between dates

    I'm totally new to JavaScript.  I try to do a calculation with a custom calculation script field.  I tried to restore something with script I have checked in several forums, but not completely succeeded.  I have 4 form fields.  2 date fields, a body of numbers (formatted for currency) and the field of computing.  The calculation I'm trying is ((365-(jours entre les 2 champs de date)) divided by 365) times (currency field).  Any help would be greatly appreciated.

    Event.value = () ((365-(xdays)) / 365) * (this.getField("premium1").value) ) .toFixed (3)

    Thank you for the offer, but a donation is not required. We can still be friends. Send me a mail to [email protected] if you want...

  • Can I perform calculations on the values of date?

    I'm trying to set a range of dates using two calendar features by entering a date "from" and a "to".

    This is done using a JavaScript that is bound to a textbox control for entering a date.  He is my date "from", if I can check this date against today to confirm that the date is later than today, that is in the future.  I have no experience with javascript, but know PASCAL.

    I then a second box with another calendar date, I want to automatically fill this box on the same date as the first area unless physically, the user wants to change the date of the last.

    Can anyone help?  I'd appreciate some tips so that I can try and learn a few Java along the way.

    GetField ("Text1") .value = s;

    There are two problems with that. The method is getField, not getfield. You must also pass the name of the field as a string. So it should be:

    s = getField("text1").value;

  • Possible bug in DateTime in the Toolbox of data base

    Hello!

    I do not have the database Toolbox, and it seems that you can not download a 64-bit evaluation...

    Bug?  I wrote to the DateTime fields to a database through the appropriate use of clusters and Inserts, but it seems that I never get from fractions of a second. Datetime controls show and the fields of database should help (at least it's montrer.000 at the end) so I wonder: does somehow use locale at the moment so this is my comma decimal point and landing so fractions?

    / Yamaeda


  • Is there a difference in the opening between the lenses?

    Happy holidays.

    I thought too new.  I'll start with what is probably a false assumption.  Suppose I have a lens that uses a 58mm filter and another that uses a 77mm filter.  For the sake of the argument, I suppose that elements of lenses in order to filter 58mm are 58mm and 77mm lenses in the goal of 77mm filter elements.

    For the reasoning, suppose that both lenses have a focal length of 50mm.  The point being, all things are equal except for the diameter of the lenses in both lenses.  Assume that both lenses are both sides with an aperture of f/1.8.

    My question is this.  The larger lens let more light than the smaller goal when both lenses are set to the same aperture setting?

    The short answer is, no.  F1.8 or f2 or some f-stop, that's exactly right.  No matter what the lens is the size.  Since it is a ratio, the actual size of the aperture blades will be different but f1.8 will always be f1.8.  He will leave in exactly the same amount of light.

    Not even two 50mm lenses with items of different sizes will be identical, but the ratio f-stop will be.  Exactly the same amount of light going through it.

    If it was not so count in a camera would be impossible.  I hope this is clear for you.

  • Required formula and best practices for the storage of data base of calculation

    Hi gurus of the Oracle

    Need your help to calculate the requirement of storage for the production database.

    Thank you

    Hitgon

    I have a query DBA_DATA_FILES show total space allocated.

    SELECT SUM (bytes) AS allocated_bytes FROM dba_data_files;

    And for 'used' space, I run the present:

    SELECT SUM (bytes) AS used_bytes FROM dba_segments;

    We don't need to digress into the discussion of what is truly used as everyone knows that there is unused space in DBA_SEGMENTS. But it works for management!

    I have a report automated that send me monthly. The same report even it breaks down by tablespace... allocated and used as I noted above. Then, I put it in Excel to generate the graph.

    See you soon,.
    Brian

  • Foreign key constraint, not recognized during the synchronization of data with the model dictionary

    Hello

    Data Modeler is a foreign key constraints do not recognize when synchronizing data with the model dictionary, although the foreign key is there (in the database that a data dictionary is read). I can't find any criterion when a foreign key is not recognized by the Data Modeler. Are there limits to the length of the attribute, or the number of columns in a foreign key, or other limitations which may lead to this behavior not to recognize a fk by Data Modeler? I have columns more than 32 characters. I compared with the fk is recognized by DM, but I can't find anything that indicates why it is not recognized.

    I wonder if someone also has constraints of foreign keys that are not recognized in the comparison of data bases and model?

    Thank you

    Robert

    Hi Robert,.

    Thanks for the comments, I logged a bug.

    Philippe

  • Retrieve the Ref cursor data

    Hello

    Here is the plsql code, I try to extract the data from the refcursor

    Declare
    number of l_ecg_id_in;
    number of l_error_code_out;
    l_cur_out sys_refcursor;
    Begin

    l_ecg_id_in: = 1249551;

    -Call the procedure
    pkg_dispatch.sp_getecgreport (p_ecg_id_in = > l_ecg_id_in,)
    p_cur_out = > l_cur_out, / / p_cur_out is back refcursor datat
    p_error_code_out = > l_error_code_out);


    Now my requirement is data retrieves in l_cur_out have too many columns, the columns are mentioned below.
    HUMAN RESOURCES
    PR
    DR
    BATTERY
    ETC.

    I want to just HR to be extacted in a variable or a collection of type

    We can extract a particular of ref cursor column, please suggest me



    End;

    Sudhir_Bangalore wrote:

    Now my requirement is data retrieves in l_cur_out have too many columns, the columns are mentioned below.
    HUMAN RESOURCES
    PR
    DR
    BATTERY
    ETC.

    I want to just HR to be extacted in a variable or a collection of type

    Then, you use the wrong cursor and you performance degradation because the cursor returns data that is not required.

    We can extract a particular of ref cursor column, please suggest me

    You can not.

    Workaround would be to copy the handle of the cursor ref to a handle to the cursor DBMS_SQL and then use cursor DBMS_SQL to treat the projection of SQL. But it would be an ugly hack.

    The right approach would be to correctly use the SQL cursors in PL/SQL. And no, ref Cursor in PL/SQL (created by code PL/SQL to PL/SQL code) is almost always the WRONG choice.

    There are better native cursor data types in PL/SQL in particular supported cursors created by PL/SQL and PL/SQL.

    REF CURSOR is provided mainly as the cursors created by PL/SQL for an external client. There are very few reasons to create Ref cursors to use PL/SQL code.

  • Need help for managed bean - to the values of the extraction of data loading of jsf is

    Hello
    in the construction of managed bean, I wrote code to extract values from database.

    but for each action (such as button clicks, drop-down list changes etc...) this constructor is called I don't want.

    I tried to over come this using beforePhase event of the jsf. but sometimes it doesn't property.

    Someone please help me to retrieve the values of data base loading of jsf is.

    Thank you
    Veera

    Veera
    If you want to execute a method in a method beforePhase only once (when loading the page) then you can check the expression #{adfFacesContext.initialRender} before running all you want.

    import javax.el.ELContext;
    import javax.el.ExpressionFactory;
    import javax.el.ValueExpression;
    import javax.faces.application.Application;
    import javax.faces.context.FacesContext;
    import javax.faces.event.PhaseEvent;
    
    public class Test {
    
        public boolean isInitialrender() {
            FacesContext fctx = FacesContext.getCurrentInstance();
            Application application = fctx.getApplication();
            ExpressionFactory expressionFactory =
                application.getExpressionFactory();
            ELContext context = fctx.getELContext();
            ValueExpression createValueExpression =
                expressionFactory.createValueExpression(context,
                                                        "#{adfFacesContext.initialRender}",
                                                        Object.class);
            Boolean isInitialrender =
                (Boolean)createValueExpression.getValue(context);
            return isInitialrender;
    
        }
    
        public void beforePhaseMethod(PhaseEvent phaseEvent) {
            // Add event code here...
            if (isInitialrender()) {
                System.out.println("This statement is shown once... when the page is loaded");
            }
        }
    }
    
  • Difference between the true Date of the Hijra with date Hijri Oracle

    Hi all

    I'd appreciate if someone please let me the solution for this problem. In my application, I displays the Hijri Date using the NLS parameter. but the question that "I'm dealing with a deference between the date of the real Hijra with the date of the Hijra oracle."


    Assume that the actual Hijri date 18-SEP-2012 was 02/11/1433 in hijri but in oracle was 03/11/1433

    When I run the following query it shows me "1433/11/03", but the actual date of the Hijra is "" 1433/11/02.

    Select to_char (to_date ('20120918', 'YYYYMMDD'), ' DD/MM/YYYY', ' NLS_calendar = "' |') Hegira ARABIC ') FROM DUAL;


    IFTIKHAR

    Check

    FAQ on the calendar of the Hijra (Hijri) [ID 121061.1] Arabic
    and
    Conversion algorithm to Date in the Gregorian calendar until then Arab (Hijra) [ID 130551.1]

    Support of Oracle.

    If you have a file called lxecal.nlt file

    for Oracle 8 to $9i ORACLE_HOME/ocommon/sln
    for Oracle 10 g and more $ORACLE_HOME/nls

    so maybe that's the difference you see originally.

    Kind regards
    Bob

  • Groovy Script to find the difference between Dates

    I am trying to build a script that takes a date from a RequestField and calculates the number of days between this date and the current date (from session).

    So far, I have a problem, the analysis to-date from the RequestField chain. I found this code but it doesn't seem to work...

    date = new Date().parse('yyyy/MM/dd', '1973/07/09')
    

    I get the following error...

    Error Message: groovy.lang.MissingMethodException: No signature of method: java.util.Date.parse() is applicable for argument types: (java.lang.String, java.lang.String) values: {"yyyy/MM/dd", "1973/07/09"}
    

    Any help would be greatly appreciated.

    Hello

    What version of server? The extract you have here works fine on mine (563).

    This also works for me

    new java.text.SimpleDateFormat('yyyy/MM/dd').parse('1973/07/09')
    

    See you soon

    Nils

  • How to find the time between two channels of entry in the data acquisition card or pci 6036

    Hello

    I read a lot-related posts on the simultaneous measurement of two input voltage of similar channels in map data acquisition. I know that the best material is "simultaneous measurments of the Series DAQ cards" but I only pci data acquisition card 6036 and I try to understand what is the time between the reading of the two channels . This period is always constant? (must it rely on a voltage (amplitude, frequency, waveform..). I send the sine wave (s) to the two channels and read the values of V, if they read the same value, the difference should always be zero but I get-0,002 to 0.002 Volt difference (I must find a way to convert it in time). A screenshot of my VI is attached. I wonder how I can accurately measure the time delay between the channel.

    I am open to any suggestion, my final goal to read exactly two channels at the same time ((ou connaître le délai exact donc je peux correspondre les données correspondantes étant donné le temps de retard))

    Hi spinup,

    better you should post your question in the forum of LabVIEW, LabWindows/CVI is used

    Good luck.

  • Huge performance difference between stored proc and anonymous PL/SQL block.  Why?

    Hello!  I searched various online resources and have been unable to find those who have addressed this problem, so I hope that someone here may be able to offer advice.

    I have a stored procedure that is approximately 300 lines long, takes no parameters, and sets a record and a few types of internal tables.  When I run it on a particular data set, it takes about 50 seconds at the end of my environment.  Unfortunately, it will have to be performed as a block anonymous PL/SQL instead of a stored procedure, because of the policies that exist about the environment which I deployment.  However, when I converted it to an anonymous PL/SQL block, make no other code changes whatsoever and it connecting the same schema that belongs to the stored procedure, it takes about 6.5 minutes (nearly 8 times as long) to complete.  Aside from the burden of analysis and validation, which could add a fraction of a second, can someone please suggest some possible reasons for the large performance difference and offer advice on what I can do about it?  In which case it is important, the procedure uses in bulk binds (for example, in bulk collect, forall) where it makes sense and doesn't call other objects in PL/SQL.  Thanks in advance.

    Without seeing your code, it is difficult for me to contribute more.

    Note also that...

    1 roles are turned on in the anonymous blocks but not (at least not by default) in the stored procedures. This is why the anonymous block could have MORE rights (those granted through roles) probability that you can get more items through anonymous block.

    2. ensure that, in both cases, it does reference the same target tables.

    Debug by calculating the difference of time after certain steps in your code. Who should get an idea on this or activate the trace.

Maybe you are looking for