Performance issues comparing two vectors

I need some advice on what is the fastest way to compare two vectors. My question is all about performance;
I have two vectors one(Vect A) of which has more than 20000 string values and the other Vector B would hold typically around 200 strings.I compare them both to find out if Vector B has values in Vector A and remove those.
I iterate thro each element in a loop from the smaller to the bigger vector comparing element by element.But it takes a long time.
Is there any quick way to do this comparison and can I use contains/compare methods instead of iterating thro the vectors.will it speeden up things
Arn

first of all, you should probably examine your collection choice and make sure that java.util.Vector is your best option (assumming you can change the class). Do not use a Hashtable as the previous poster suggested- it doesn't sound like you have a key/value type relationship in your elements, making a Map implementation superflous. Will there be duplicate elements in either Collection? If you will not have duplicate elements, you should probably use a Set collection instead of a List. Does your collection have to be thread-safe? If not, one of the unsynchronized collections should give you better performance (e.g. ArrayList should be quicker then Vector). For the best possible performance, you could use an ordered collection and write your own comparator, so that it does not iterate beyond what ever element assurres that there is no match (i.e. if the first element is "fred" in an ordered collection, you know there will be no match for "adam"). Sun has some good tutorials on the java.util.Collection package that will help you understand the benefit of each implemenation...
although, and I suppose this is neither here nor there, I wouldn't use java objects to sort through 20K string items- sounds like storing them in a database might be superior. Take care.

Similar Messages

  • Performance issue with two unbanalnced hierarchies in a single report

    Hi All
    We are facing the performance issue with one of the report which houses two unbalanced hierarchies (having 18 levels) - skipped & ragged. Basically its a part of OBIAPPS financila analytics .
    The query is below :
    Could anyone let me know how to improve the performane. Any parameter that should be looked at while using unbalanced hierarchies.
    WITH SAWITH0
    AS ( SELECT SUM (T91707.OTHER_LOC_AMT) AS c1,
    MAX (T314768.HIER2_CODE) AS c2,
    MAX (T314768.HIER3_CODE) AS c3,
    MAX (T314768.HIER4_CODE) AS c4,
    MAX (T314768.HIER5_CODE) AS c5,
    MAX (T314768.HIER6_CODE) AS c6,
    MAX (T314768.HIER7_CODE) AS c7,
    MAX (T314768.HIER8_CODE) AS c8,
    MAX (T314768.HIER9_CODE) AS c9,
    MAX (T314768.HIER10_CODE) AS c10,
    MAX (T314768.HIER11_CODE) AS c11,
    MAX (T314768.HIER12_CODE) AS c12,
    MAX (T314768.HIER13_CODE) AS c13,
    MAX (T314768.HIER14_CODE) AS c14,
    MAX (T314768.HIER15_CODE) AS c15,
    MAX (T314768.HIER16_CODE) AS c16,
    MAX (T314768.HIER17_CODE) AS c17,
    MAX (T314768.HIER18_CODE) AS c18,
    MAX (T314768.HIER19_CODE) AS c19,
    MAX (T314768.HIER20_CODE) AS c20,
    T314768.HIER1_NAME AS c21,
    T314768.HIER1_CODE AS c22,
    T314914.HIER1_NAME AS c24,
    T314914.HIER10_NAME AS c25,
    T314914.HIER11_NAME AS c26,
    T314914.HIER12_NAME AS c27,
    T314914.HIER13_NAME AS c28,
    T314914.HIER14_NAME AS c29,
    T314914.HIER15_NAME AS c30,
    T314914.HIER16_NAME AS c31,
    T314914.HIER17_NAME AS c32,
    T314914.HIER18_NAME AS c33,
    T314914.HIER19_NAME AS c34,
    T314914.HIER2_NAME AS c35,
    T314914.HIER20_NAME AS c36,
    T314914.HIER3_NAME AS c37,
    T314914.HIER4_NAME AS c38,
    T314914.HIER5_NAME AS c39,
    T314914.HIER6_NAME AS c40,
    T314914.HIER7_NAME AS c41,
    T314914.HIER8_NAME AS c42,
    T314914.HIER9_NAME AS c43,
    T314914.HIER20_CODE AS c44,
    T314914.HIER1_CODE AS c45,
    T314914.HIER10_CODE AS c46,
    T314914.HIER11_CODE AS c47,
    T314914.HIER12_CODE AS c48,
    T314914.HIER13_CODE AS c49,
    T314914.HIER14_CODE AS c50,
    T314914.HIER15_CODE AS c51,
    T314914.HIER16_CODE AS c52,
    T314914.HIER17_CODE AS c53,
    T314914.HIER18_CODE AS c54,
    T314914.HIER19_CODE AS c55,
    T314914.HIER2_CODE AS c56,
    T314914.HIER3_CODE AS c57,
    T314914.HIER4_CODE AS c58,
    T314914.HIER5_CODE AS c59,
    T314914.HIER6_CODE AS c60,
    T314914.HIER7_CODE AS c61,
    T314914.HIER8_CODE AS c62,
    T314914.HIER9_CODE AS c63
    FROM W_HIERARCHY_D T314768 /* Dim_W_HIERARCHY_D_Segment11 */
    W_GL_SEGMENT_D T315677 /* Dim_W_GL_SEGMENT_D_Segment11 */
    W_HIERARCHY_D T314914 /* Dim_W_HIERARCHY_D_Segment13 */
    W_GL_SEGMENT_D T315731 /* Dim_W_GL_SEGMENT_D_Segment13 */
    W_GL_ACCOUNT_D T91397 /* Dim_W_GL_ACCOUNT_D */
    W_GL_OTHER_F T91707 /* Fact_W_GL_OTHER_F */
    WHERE ( T91397.ROW_WID = T91707.GL_ACCOUNT_WID
    AND T91397.ACCOUNT_SEG11_CODE = T315677.SEGMENT_VAL_CODE
    AND T91397.ACCOUNT_SEG13_CODE = T315731.SEGMENT_VAL_CODE
    AND T91397.ACCOUNT_SEG11_ATTRIB = T315677.SEGMENT_LOV_ID
    AND T91397.ACCOUNT_SEG13_ATTRIB = T315731.SEGMENT_LOV_ID
    AND T314768.HIER_CODE = T315677.SEGMENT_LOV_ID
    AND T314768.HIER_NAME = T315677.SEGMENT_LOV_NAME
    AND T314768.HIERARCHY_ID = T315677.SEGMENT_VAL_CODE
    AND T314914.HIER_CODE = T315731.SEGMENT_LOV_ID
    AND T314914.HIER_NAME = T315731.SEGMENT_LOV_NAME
    AND T314914.HIERARCHY_ID = T315731.SEGMENT_VAL_CODE
    AND T315677.SEGMENT_LOV_NAME =
    'Responsibility_Centre_Functional'
    AND T315677.SEGMENT_LOV_ID = 1000163
    AND T315731.SEGMENT_LOV_NAME = 'Account_Master'
    AND T315731.SEGMENT_LOV_ID = 1000165
    AND ( T314914.HIER11_CODE IN ('S526002012')
    OR T314914.HIER12_CODE IN ('S000001022')
    OR T314914.HIER11_CODE IS NULL)
    AND (T314914.HIER12_CODE IN ('S000001022')
    OR T314914.HIER12_CODE IS NULL)
    AND ( T314914.HIER8_CODE IN ('S000005160')
    OR T314914.HIER9_CODE IN ('S000000187')
    OR T314914.HIER10_CODE IN ('S526003000')
    OR T314914.HIER11_CODE IN ('S526002012')
    OR T314914.HIER12_CODE IN ('S000001022')
    OR T314914.HIER8_CODE IS NULL)
    AND ( T314914.HIER9_CODE IN ('S000000187')
    OR T314914.HIER10_CODE IN ('S526003000')
    OR T314914.HIER11_CODE IN ('S526002012')
    OR T314914.HIER12_CODE IN ('S000001022')
    OR T314914.HIER9_CODE IS NULL)
    AND ( T314914.HIER10_CODE IN ('S526003000')
    OR T314914.HIER11_CODE IN ('S526002012')
    OR T314914.HIER12_CODE IN ('S000001022')
    OR T314914.HIER10_CODE IS NULL)
    AND ( T314914.HIER1_CODE IN ('ALL_LI')
    OR T314914.HIER2_CODE IN ('S000000001')
    OR T314914.HIER3_CODE IN ('S000005150')
    OR T314914.HIER4_CODE IN ('S000005151')
    OR T314914.HIER5_CODE IN ('S000005153')
    OR T314914.HIER6_CODE IN ('S000005154')
    OR T314914.HIER7_CODE IN ('S000005062')
    OR T314914.HIER8_CODE IN ('S000005160')
    OR T314914.HIER9_CODE IN ('S000000187')
    OR T314914.HIER10_CODE IN ('S526003000')
    OR T314914.HIER11_CODE IN ('S526002012')
    OR T314914.HIER12_CODE IN ('S000001022'))
    AND ( T314914.HIER2_CODE IN ('S000000001')
    OR T314914.HIER3_CODE IN ('S000005150')
    OR T314914.HIER4_CODE IN ('S000005151')
    OR T314914.HIER5_CODE IN ('S000005153')
    OR T314914.HIER6_CODE IN ('S000005154')
    OR T314914.HIER7_CODE IN ('S000005062')
    OR T314914.HIER8_CODE IN ('S000005160')
    OR T314914.HIER9_CODE IN ('S000000187')
    OR T314914.HIER10_CODE IN ('S526003000')
    OR T314914.HIER11_CODE IN ('S526002012')
    OR T314914.HIER12_CODE IN ('S000001022')
    OR T314914.HIER2_CODE IS NULL)
    AND ( T314914.HIER3_CODE IN ('S000005150')
    OR T314914.HIER4_CODE IN ('S000005151')
    OR T314914.HIER5_CODE IN ('S000005153')
    OR T314914.HIER6_CODE IN ('S000005154')
    OR T314914.HIER7_CODE IN ('S000005062')
    OR T314914.HIER8_CODE IN ('S000005160')
    OR T314914.HIER9_CODE IN ('S000000187')
    OR T314914.HIER10_CODE IN ('S526003000')
    OR T314914.HIER11_CODE IN ('S526002012')
    OR T314914.HIER12_CODE IN ('S000001022')
    OR T314914.HIER3_CODE IS NULL)
    AND ( T314914.HIER4_CODE IN ('S000005151')
    OR T314914.HIER5_CODE IN ('S000005153')
    OR T314914.HIER6_CODE IN ('S000005154')
    OR T314914.HIER7_CODE IN ('S000005062')
    OR T314914.HIER8_CODE IN ('S000005160')
    OR T314914.HIER9_CODE IN ('S000000187')
    OR T314914.HIER10_CODE IN ('S526003000')
    OR T314914.HIER11_CODE IN ('S526002012')
    OR T314914.HIER12_CODE IN ('S000001022')
    OR T314914.HIER4_CODE IS NULL)
    AND ( T314914.HIER5_CODE IN ('S000005153')
    OR T314914.HIER6_CODE IN ('S000005154')
    OR T314914.HIER7_CODE IN ('S000005062')
    OR T314914.HIER8_CODE IN ('S000005160')
    OR T314914.HIER9_CODE IN ('S000000187')
    OR T314914.HIER10_CODE IN ('S526003000')
    OR T314914.HIER11_CODE IN ('S526002012')
    OR T314914.HIER12_CODE IN ('S000001022')
    OR T314914.HIER5_CODE IS NULL)
    AND ( T314914.HIER6_CODE IN ('S000005154')
    OR T314914.HIER7_CODE IN ('S000005062')
    OR T314914.HIER8_CODE IN ('S000005160')
    OR T314914.HIER9_CODE IN ('S000000187')
    OR T314914.HIER10_CODE IN ('S526003000')
    OR T314914.HIER11_CODE IN ('S526002012')
    OR T314914.HIER12_CODE IN ('S000001022')
    OR T314914.HIER6_CODE IS NULL)
    AND ( T314914.HIER7_CODE IN ('S000005062')
    OR T314914.HIER8_CODE IN ('S000005160')
    OR T314914.HIER9_CODE IN ('S000000187')
    OR T314914.HIER10_CODE IN ('S526003000')
    OR T314914.HIER11_CODE IN ('S526002012')
    OR T314914.HIER12_CODE IN ('S000001022')
    OR T314914.HIER7_CODE IS NULL)
    AND T314768.HIER1_CODE IS NOT NULL
    AND T314914.HIER20_CODE IS NOT NULL
    AND T314914.HIER13_CODE IS NULL
    AND T314914.HIER14_CODE IS NULL
    AND T314914.HIER15_CODE IS NULL
    AND T314914.HIER16_CODE IS NULL
    AND T314914.HIER17_CODE IS NULL
    AND T314914.HIER18_CODE IS NULL
    AND T314914.HIER19_CODE IS NULL)
    GROUP BY T314768.HIER1_CODE,
    T314768.HIER1_NAME,
    T314914.HIER1_CODE,
    T314914.HIER1_NAME,
    T314914.HIER2_CODE,
    T314914.HIER2_NAME,
    T314914.HIER3_CODE,
    T314914.HIER3_NAME,
    T314914.HIER4_CODE,
    T314914.HIER4_NAME,
    T314914.HIER5_CODE,
    T314914.HIER5_NAME,
    T314914.HIER6_CODE,
    T314914.HIER6_NAME,
    T314914.HIER7_CODE,
    T314914.HIER7_NAME,
    T314914.HIER8_CODE,
    T314914.HIER8_NAME,
    T314914.HIER9_CODE,
    T314914.HIER9_NAME,
    T314914.HIER10_CODE,
    T314914.HIER10_NAME,
    T314914.HIER11_CODE,
    T314914.HIER11_NAME,
    T314914.HIER12_CODE,
    T314914.HIER12_NAME,
    T314914.HIER13_CODE,
    T314914.HIER13_NAME,
    T314914.HIER14_CODE,
    T314914.HIER14_NAME,
    T314914.HIER15_CODE,
    T314914.HIER15_NAME,
    T314914.HIER16_CODE,
    T314914.HIER16_NAME,
    T314914.HIER17_CODE,
    T314914.HIER17_NAME,
    T314914.HIER18_CODE,
    T314914.HIER18_NAME,
    T314914.HIER19_CODE,
    T314914.HIER19_NAME,
    T314914.HIER20_CODE,
    T314914.HIER20_NAME),
    SAWITH1
    AS (SELECT SUM (D1.c1) OVER () AS c1,
    MAX (D1.c2) OVER (PARTITION BY D1.c22) AS c2,
    MAX (D1.c3) OVER (PARTITION BY D1.c22) AS c3,
    MAX (D1.c4) OVER (PARTITION BY D1.c22) AS c4,
    MAX (D1.c5) OVER (PARTITION BY D1.c22) AS c5,
    MAX (D1.c6) OVER (PARTITION BY D1.c22) AS c6,
    MAX (D1.c7) OVER (PARTITION BY D1.c22) AS c7,
    MAX (D1.c8) OVER (PARTITION BY D1.c22) AS c8,
    MAX (D1.c9) OVER (PARTITION BY D1.c22) AS c9,
    MAX (D1.c10) OVER (PARTITION BY D1.c22) AS c10,
    MAX (D1.c11) OVER (PARTITION BY D1.c22) AS c11,
    MAX (D1.c12) OVER (PARTITION BY D1.c22) AS c12,
    MAX (D1.c13) OVER (PARTITION BY D1.c22) AS c13,
    MAX (D1.c14) OVER (PARTITION BY D1.c22) AS c14,
    MAX (D1.c15) OVER (PARTITION BY D1.c22) AS c15,
    MAX (D1.c16) OVER (PARTITION BY D1.c22) AS c16,
    MAX (D1.c17) OVER (PARTITION BY D1.c22) AS c17,
    MAX (D1.c18) OVER (PARTITION BY D1.c22) AS c18,
    MAX (D1.c19) OVER (PARTITION BY D1.c22) AS c19,
    MAX (D1.c20) OVER (PARTITION BY D1.c22) AS c20,
    D1.c21 AS c21,
    D1.c22 AS c22,
    SUM (
    D1.c1)
    OVER (
    PARTITION BY D1.c46,
    D1.c47,
    D1.c48,
    D1.c49,
    D1.c50,
    D1.c51,
    D1.c52,
    D1.c53,
    D1.c54,
    D1.c55,
    D1.c45,
    D1.c44,
    D1.c56,
    D1.c57,
    D1.c58,
    D1.c59,
    D1.c60,
    D1.c61,
    D1.c62,
    D1.c63,
    D1.c22)
    AS c23,
    D1.c24 AS c24,
    D1.c25 AS c25,
    D1.c26 AS c26,
    D1.c27 AS c27,
    D1.c28 AS c28,
    D1.c29 AS c29,
    D1.c30 AS c30,
    D1.c31 AS c31,
    D1.c32 AS c32,
    D1.c33 AS c33,
    D1.c34 AS c34,
    D1.c35 AS c35,
    D1.c36 AS c36,
    D1.c37 AS c37,
    D1.c38 AS c38,
    D1.c39 AS c39,
    D1.c40 AS c40,
    D1.c41 AS c41,
    D1.c42 AS c42,
    D1.c43 AS c43,
    D1.c44 AS c44,
    D1.c45 AS c45,
    D1.c46 AS c46,
    D1.c47 AS c47,
    D1.c48 AS c48,
    D1.c49 AS c49,
    D1.c50 AS c50,
    D1.c51 AS c51,
    D1.c52 AS c52,
    D1.c53 AS c53,
    D1.c54 AS c54,
    D1.c55 AS c55,
    D1.c56 AS c56,
    D1.c57 AS c57,
    D1.c58 AS c58,
    D1.c59 AS c59,
    D1.c60 AS c60,
    D1.c61 AS c61,
    D1.c62 AS c62,
    D1.c63 AS c63
    FROM SAWITH0 D1)
    SELECT DISTINCT
    38 AS c1,
    D1.c24 AS c2,
    D1.c25 AS c3,
    D1.c26 AS c4,
    D1.c27 AS c5,
    D1.c28 AS c6,
    D1.c29 AS c7,
    D1.c30 AS c8,
    D1.c31 AS c9,
    D1.c32 AS c10,
    D1.c33 AS c11,
    D1.c34 AS c12,
    D1.c35 AS c13,
    D1.c36 AS c14,
    D1.c37 AS c15,
    D1.c38 AS c16,
    D1.c39 AS c17,
    D1.c40 AS c18,
    D1.c41 AS c19,
    D1.c42 AS c20,
    D1.c43 AS c21,
    D1.c21 AS c22,
    NULL AS c23,
    NULL AS c24,
    NULL AS c25,
    NULL AS c26,
    NULL AS c27,
    NULL AS c28,
    NULL AS c29,
    NULL AS c30,
    NULL AS c31,
    NULL AS c32,
    NULL AS c33,
    NULL AS c34,
    NULL AS c35,
    NULL AS c36,
    NULL AS c37,
    NULL AS c38,
    NULL AS c39,
    NULL AS c40,
    NULL AS c41,
    D1.c44 AS c42,
    D1.c45 AS c43,
    D1.c46 AS c44,
    D1.c47 AS c45,
    D1.c48 AS c46,
    D1.c49 AS c47,
    D1.c50 AS c48,
    D1.c51 AS c49,
    D1.c52 AS c50,
    D1.c53 AS c51,
    D1.c54 AS c52,
    D1.c55 AS c53,
    D1.c56 AS c54,
    D1.c57 AS c55,
    D1.c58 AS c56,
    D1.c59 AS c57,
    D1.c60 AS c58,
    D1.c61 AS c59,
    D1.c62 AS c60,
    D1.c63 AS c61,
    NULL AS c62,
    D1.c22 AS c63,
    NULL AS c64,
    NULL AS c65,
    NULL AS c66,
    NULL AS c67,
    NULL AS c68,
    NULL AS c69,
    NULL AS c70,
    NULL AS c71,
    NULL AS c72,
    NULL AS c73,
    NULL AS c74,
    NULL AS c75,
    NULL AS c76,
    NULL AS c77,
    NULL AS c78,
    NULL AS c79,
    NULL AS c80,
    NULL AS c81,
    D1.c23 AS c82,
    CASE WHEN 1 = 1 THEN 1 ELSE 0 END AS c83,
    CASE
    WHEN D1.c2 IS NULL
    AND D1.c3 IS NULL
    AND D1.c4 IS NULL
    AND D1.c5 IS NULL
    AND D1.c6 IS NULL
    AND D1.c7 IS NULL
    AND D1.c8 IS NULL
    AND D1.c9 IS NULL
    AND D1.c10 IS NULL
    AND D1.c11 IS NULL
    AND D1.c12 IS NULL
    AND D1.c13 IS NULL
    AND D1.c14 IS NULL
    AND D1.c15 IS NULL
    AND D1.c16 IS NULL
    AND D1.c17 IS NULL
    AND D1.c18 IS NULL
    AND D1.c19 IS NULL
    AND D1.c20 IS NULL
    THEN
    1
    ELSE
    0
    END
    AS c84
    FROM SAWITH1 D1
    WHERE ( D1.c44 IS NOT NULL
    AND D1.c50 IS NULL
    AND D1.c49 IS NULL
    AND D1.c22 IS NOT NULL
    AND D1.c51 IS NULL
    AND D1.c52 IS NULL
    AND D1.c53 IS NULL
    AND D1.c54 IS NULL
    AND D1.c55 IS NULL)
    /* Formatted on 12/17/2012 7:49:44 PM (QP5 v5.139.911.3011) */
    WITH OBICOMMON0
    AS (SELECT T156337.ROW_WID AS c2,
    T156337.MCAL_PERIOD_WID AS c3,
    ROW_NUMBER ()
    OVER (PARTITION BY T156337.MCAL_PERIOD_WID
    ORDER BY T156337.MCAL_PERIOD_WID DESC)
    AS c4,
    T156337.MCAL_PERIOD_NAME AS c5,
    T156337.MCAL_PER_NAME_YEAR AS c6
    FROM W_MCAL_DAY_D T156337 /* Dim_W_MCAL_DAY_D_Fiscal_Day */
    WHERE (T156337.MCAL_CAL_NAME = 'Accounting')),
    SAWITH0
    AS (SELECT CASE
    WHEN CASE D1.c4 WHEN 1 THEN D1.c2 ELSE NULL END
    IS NOT NULL
    THEN
    RANK ()
    OVER (
    ORDER BY
    CASE D1.c4 WHEN 1 THEN D1.c2 ELSE NULL END ASC NULLS LAST)
    END
    AS c1,
    D1.c2 AS c2,
    D1.c3 AS c3
    FROM OBICOMMON0 D1),
    SAWITH1
    AS (SELECT DISTINCT
    MIN (D1.c1) OVER (PARTITION BY D1.c3) AS c1, D1.c2 AS c2
    FROM SAWITH0 D1),
    SAWITH2
    AS (SELECT CASE
    WHEN CASE D1.c4 WHEN 1 THEN D1.c2 ELSE NULL END
    IS NOT NULL
    THEN
    RANK ()
    OVER (
    ORDER BY
    CASE D1.c4 WHEN 1 THEN D1.c2 ELSE NULL END ASC NULLS LAST)
    END
    AS c1,
    D1.c3 AS c2,
    D1.c5 AS c3,
    D1.c6 AS c4
    FROM OBICOMMON0 D1),
    SAWITH3 AS (SELECT DISTINCT MIN (D1.c1) OVER (PARTITION BY D1.c2) AS c1,
    D1.c2 AS c2,
    D1.c3 AS c3,
    D1.c4 AS c4
    FROM SAWITH2 D1),
    SAWITH4
    AS ( SELECT SUM (T91707.TD_OTHER_REP_AMT) AS c1,
    T314914.HIER1_NAME AS c2,
    D2.c3 AS c3,
    T314914.HIER1_CODE AS c4,
    D2.c2 AS c5
    FROM W_HIERARCHY_D T314914 /* Dim_W_HIERARCHY_D_Segment13 */
    W_GL_SEGMENT_D T315731 /* Dim_W_GL_SEGMENT_D_Segment13 */
    W_GL_ACCOUNT_D T91397 /* Dim_W_GL_ACCOUNT_D */
    W_GL_OTHER_F T91707 /* Fact_W_GL_OTHER_F */
    SAWITH1 D4,
    SAWITH3 D2
    WHERE ( T314914.HIER_CODE = T315731.SEGMENT_LOV_ID
    AND T314914.HIER_NAME = T315731.SEGMENT_LOV_NAME
    AND T91397.ROW_WID = T91707.GL_ACCOUNT_WID
    AND T91707.ACCT_PERIOD_END_DT_WID = D4.c2
    AND T314914.HIERARCHY_ID = T315731.SEGMENT_VAL_CODE
    AND T91397.ACCOUNT_SEG13_CODE = T315731.SEGMENT_VAL_CODE
    AND T91397.ACCOUNT_SEG13_ATTRIB = T315731.SEGMENT_LOV_ID
    AND T315731.SEGMENT_LOV_NAME =
    'Account_Retail_Distribution'
    AND T315731.SEGMENT_LOV_ID = 1000165
    AND D2.c1 = D4.c1
    AND (D2.c4 IN ('2011', '2012')))
    GROUP BY T314914.HIER1_CODE,
    T314914.HIER1_NAME,
    D2.c2,
    D2.c3)
    SELECT D1.c1 AS c1,
    D1.c2 AS c2,
    D1.c3 AS c3,
    D1.c4 AS c4,
    D1.c5 AS c5,
    D1.c6 AS c6
    FROM ( SELECT DISTINCT 0 AS c1,
    D1.c2 AS c2,
    D1.c3 AS c3,
    D1.c4 AS c4,
    D1.c1 AS c5,
    D1.c5 AS c6
    FROM SAWITH4 D1
    ORDER BY c2 NULLS FIRST, c4 NULLS FIRST, c3) D1
    WHERE ROWNUM <= 65001

    Hello Gurus, Experts
    Any help/tips here ...

  • Comparing two vectors of objects

    Hi,
    This is just a small example of what I am trying to do.
    Trying to just compare the objects of type FileInfo in the vectors, do I have to create a compareTo function or something to define what is equal when comparing the objects? Where would I create this and how would I implement it?
              Vector v1 = new Vector();
              Vector v2 = new Vector();
              v1.addElement(new FileInfo("blah", "name"));
              v1.addElement(new FileInfo("blah", "name"));
              System.out.println(v1.equals(v2));
    // Returns falseThanks

    Only way I have thought of is change the vector to an
    array and use Sort(Object, Compator)
    Seems the easiest way. It is wierd [weird] how Vectors don't
    have any functions that allow you to compare things.Vector DOES compare things. But, it uses "equals" on those objects. If you didn't write an "equals" method for FileInfo, it will only compare the REFERENCES of FileInfo objects, not the data within those objects. I assume you want to have your "equals" methods compare the two "blah"s and the two "name"s (using String.equals). Give it a shot. If your "equals" doesn't work, then post it and tell us what "doesn't work" about it.

  • Comparing two Vectors

    I have a vector which initially reads a file line by line and is displayed by an applet. The file has 'N' constant lines & is dynamic . When the applet gets refreshed, the file is read into an another Vector. Now how do i compare the two vectors i.e in case there is any change in the new Vector the new 'n' lines should be appended to the old vector by replacing the 'n' lines.
    Thanks

    If I understand your question correctly, you have an input file of fixed length (for argument's sake, we will say 5 lines) as in:
    line #1
    line #2
    line #3
    line #4
    line #5You read these lines into a Vector (we'll call it Vector A). Some time passes, and you look at the file again, and it's contents are:
    line #3
    line #4
    line #5
    line #6
    line #7Now you read these lines into Vector B. This is the part I get confused about. If you are just planning on detecting change(i.e., remove 1 & 2, add 6 & 7), why not just overwrite Vector A with Vector B?
    If you need to know specifically which lines are new, you could write simple methods:
    * This method will return a Vector containing the lines no longer in
    * the file.
    * @param vecOld the Old Vector
    * @param vecNew the New Vector
    * @return a Vector containing entries in Old not found in New
    public Vector findRemovals(Vector vecOld, Vector vecNew) {
      Vector vecReturn = new Vector();
      for (int i = 0; i < vecOld.size(); i++) {
        if (!vecNew.contains(vecOld.get(i))) {
          vecReturn.add(vecOld.get(i));
      return vecReturn;
    * This method will return a Vector containing the new lines in
    * the file.
    * @param vecOld the Old Vector
    * @param vecNew the New Vector
    * @return a Vector containing entries in New not found in Old
    public Vector findAdditions(Vector vecOld, Vector vecNew) {
      Vector vecReturn = new Vector();
      for (int i = 0; i < vecNew.size(); i++) {
        if (!vecOld.contains(vecNew.get(i))) {
          vecReturn.add(vecNew.get(i));
      return vecReturn;
    }I hope this helps. If not, could you post a clearer description of your problem?

  • Comparing two vectors using index of

    Hi
    I have two vectors .Vector 1 holds around 100 strings.Vector 2 holds 10000 strings.I need to compare iterate through the vector to see if the there any strings matching and pull them out.How do I use the index of method to compare the two
    Thanks
    Arnold

    Hi
    I have two vectors .Vector 1 holds around 100
    strings.Vector 2 holds 10000 strings.I need to compare
    iterate through the vector to see if the there any
    strings matching and pull them out.How do I use the
    index of method to compare the two
    Thanks
    ArnoldInstead of using a vector why don't you use a array, this would allow you to sort using a Comparator, also I would try and get away from a Vector, they are syncronized and can be very slow, try using a ArrayList if you must use a Collection.
    If you do use a array, sort it then when you are searching it just cut the 10000 size array in half, this gives you only 5000 and then do the same until you have chunked it down to a min amount, If I am not mistaken this is how db with large bitmap indecs work.
    HTH

  • Performance issue with two Infosets in one crystal report

    I am using two infosets that are not linked together by any primary key. The main infoset had transaction records and the seconds infoset has only one record (which is a foreign exchange rate). The performance is slow and I am presuming its because there are no linked fiields between the infosets, everytime a record is read from the main infoset it goes to the second infoset and also reads the record there. Is there a way toimprove performance? How can I have the report read the second infoset only once and stiore that value to be used when reading trecords from the first infoset.

    I am using two infosets that are not linked together by any primary key. The main infoset has transaction records and the second infoset has only one record (which is a foreign exchange rate). The performance is slow and I am presuming its because there are no linked fileds between the infosets, everytime a record is read from the main infoset it goes to the second infoset and also reads the record there. Is there a way to improve performance? How can I have the report read the second infoset only once and store that value to be used when reading records from the first infoset.

  • Comparing two Calendar dates

    No question. Just a comment with code example.
    Yesterday I was having issues comparing two Calendar dates. They looked equal in my println statement, but they failed the test. The solution evaded my cafeine intensified brain for hours. Then it hit me. Print out the time in milliseconds and see if the numbers were the same. Nope. Why?
    The problem was that in the real world, you get dates from all over the place, not just cooked up for a text book example. (Don't you just hate those text book examples in their unrealistic world?) Anyway, I was getting a date from an HTML form and a data from a database and comparing the two once I had converted them both to a Calendar object. This seemed a reasonable choice.
    Well, the java.sql.Date that the Oracle driver returned which was converted to a java.util.Date was fine. I ran this into a Calendar with the call calS.setTime(dbDate). The form date was split into fields and put into a difference Calendar obj with the call calF.set(fYear, fMonth, fDay, 0, 0, 0). This too seemed reasonable. Then a call to calS.equls(calF) resulted in a false even though the actual dates were in fact the same.
    The problem was with the time. The java.sql.Date (calS) had a time of 00:00:00 which was fine. The calendar from the form also had 00:00:00 for a time since I initialized it with zeros. Hummmmm. Now what? As mentioned before, I decided to print out the actuall time in milliseconds and that gave me my answer. The two calendars were off by only milliseconds, but that's why. You see, the equals method of Calendar compares two dates/time in milliseconds. You can see this in the source for yourself. It's not difficult to read at all. Download and open the api source file, src.zip, and locate Calendar.java in the java.util directory.
    The fix was to add calF.set(Calendar.MILLISECOND, 0) and calS.set(Calendar.MILLISECOND, 0) to zero out the milliseconds in each Calendar object. That did the trick. Here's example code of the problem (test1) and the solution (test2). I tried to simulate as close to real world as possible. If you have a better solution or I've made some error, please let me know. I'm always looking for better ways.
    Main.java
    import java.util.Calendar;
    import java.util.Date;
    import java.text.SimpleDateFormat;
    public class Main {
        private int fYear = 2003;
        private int fMonth = 3;  // march
        private int fDay = 14;
        public static void main(String[] args) {
            Main main = new Main();
            main.test1();
            main.test2();
        public void test1() {
            SimpleDateFormat df = new SimpleDateFormat();
            // get the date from the form
            Calendar calF = Calendar.getInstance();
            calF.set(fYear, fMonth-1, fDay, 0, 0, 0);  // month starts at 0 - so march would be 2
            System.out.println("From form date:     [" + df.format(calF.getTime()) + "] [" + calF.getTimeInMillis() + "]");
            // simulate other activity in the app
            try {
                Thread.sleep(5000);
            catch (Exception ex) {
                ex.printStackTrace();
            // get the Date from the shared object which comes from a database (java.sql.Date)
            // the return is java.util.Date
            // convert to a Calendar
            SharedObject so = new SharedObject();
            Date myDate = so.getTheDate();
            Calendar calS = Calendar.getInstance();
            calS.setTime(myDate);
            System.out.println("Shared Object date: [" + df.format(calS.getTime()) + "] [" + calS.getTimeInMillis() + "]");
            // compare the two calendars for equality
            if (calS.equals(calF)) {
                System.out.println("The same");
            else {
                System.out.println("NOT the same");
        public void test2() {
            SimpleDateFormat df = new SimpleDateFormat();
            // get the date from the form
            Calendar calF = Calendar.getInstance();
            calF.set(fYear, fMonth-1, fDay, 0, 0, 0);
            calF.set(Calendar.MILLISECOND, 0);  // the magic bean
            System.out.println("From form date:     [" + df.format(calF.getTime()) + "] [" + calF.getTimeInMillis() + "]");
            // simulate other activity in the app
            try {
                Thread.sleep(5000);
            catch (Exception ex) {
                ex.printStackTrace();
            // get the Date from the shared object which comes from a database (java.sql.Date)
            // the return is java.util.Date
            // convert to a Calendar
            SharedObject so = new SharedObject();
            Date myDate = so.getTheDate();
            Calendar calS = Calendar.getInstance();
            calS.setTime(myDate);  // just to be safe
            calF.set(Calendar.MILLISECOND, 0);
            System.out.println("Shared Object date: [" + df.format(calS.getTime()) + "] [" + calS.getTimeInMillis() + "]");
            // compare the two calendars for equality
            if (calS.equals(calF)) {
                System.out.println("The same");
            else {
                System.out.println("NOT the same");
    SharedObject.java
    public class SharedObject {
        public java.util.Date getTheDate() {
            java.util.Date d = null;
            try {
                java.sql.Date s = java.sql.Date.valueOf("2003-3-14");  // this march is converted internally
                d = (java.util.Date)s;
            catch (Exception ex) {
                ex.printStackTrace();
            return d;
    } The output
    From form date:     [3/14/03 12:00 AM] [1047621600296]
    Shared Object date: [3/14/03 12:00 AM] [1047621600000]
    NOT the same
    From form date:     [3/14/03 12:00 AM] [1047621600000]
    Shared Object date: [3/14/03 12:00 AM] [1047621600000]
    The same

    So your post boils down to the fact that Calendar's set(year, month, day, hour, minute, second) method doesn't change the milliseconds fraction?
    Given that there is this method, I guess it would be nice if there was a method that simultaneously set all fields, but the API does state:
    Previous values of other fields are retained. If this is not desired, call clear() first.

  • Performance Issue while Joining two Big Tables

    Hello Experts,
    We've the following Scenario, wherein we need to have Sales rep associated for a Sales Order. This information is available in VBPA table with Sales Order, Sales Order Item and Partner Function being the key.
    NOw I'm interested in only one Partner Function for e.g. 'ZP'. This table is having around 120 million records.
    I tried both options:
    Option 1 - Join this table(VBPA) with Sales Order Item table(VBAP) within the Data Foundation Layer of the Analytic View and doing the filtering on Partner Function
    Option 2 - Create a Attribute View for VBPA having filtering on Partner Function and then join this Attribute View in the Logical Join Layer with the Data Foundation table.
    Both these options are killing the performance.
    Is there any way out to achieve this ?
    Your expert opinion is greatly appreciated!!
    Thanks & regards,
    Jomy

    Hi,
    Lars is correct. You may have to spend a little bit more time and give a bigger picture.
    I have used this join. It takes about 2 to 3 seconds to execute this join for me. My data volume is less than yours.
    You must be have used a left outer join when joining the attribute view (with constant filter ZP  as specified in your first post) to the data foundation. Please cross check once again, as sometimes my fat finger inadvertently changed the join type and I had to go back and fix it. If this is a left outer join or a referential join, HANA  does not perform the join if you are not requesting any field from the attribute view on table VBPA. This used to be a problem due to a bug in SP4 but got fixed in SP5.
    However, if you have performed this join in the data foundation, it does enforce, the join even if you did not ask any fields from the VBPA table. The reason being that you have put a constant filter ZR (LIPS->VBPA join in  data foundation as specified in one of your later replies).
    If any measure you are selecting in the analytic view is a restricted measure  or a calculated measure that needs some field from VBPA, then the join will be enforced as you would agree. This is where I had most trouble. My  join itself is not bad but my business requirement to get the current value of a partner attribute on  a higher level calculation view sent too much data from analytic view to calculation view.
    Please send the full diagram  of your model and vizplan. Also, if you are using a front end (like analysis office), please trap the SQL sent from this front end tool and include it in the message.  Even a straight SQL you have used in which you have detected this performance issue will be helpful.
    Ramana

  • Aperture performance issues.

    Dear members:
    After some disappointments with the latest version of Bridge (CS3) I decided to start working with Aperture as I found it offered some interesting tools for viewing and selecting images.
    First I worked on some test images and everything went well. However, last night I did my first import of "real world" images and experienced severe performance issues.
    I imported one folder containing 163 photos to two different locations - the folder and the images were the same but imported into two separate locations in Aperture as I was trying to create the ideal file structure for me.
    These are the questions and/or problems I have.
    1. This IS NOT a major problem. As much as I tried to import photos into an album or folder I couldn't do it. I don't like the project concept and prefer to have my images placed into folders or albums. My iPhoto library was imported by Aperture using this structure. The iPhoto library is a folder with albums as subdivisions as they were set up in iPhoto originally. However, this doesn't seem to be working as I import photos from other locations.
    Q: How can I import photos into folders or albums and completely avoid the projects concept and icons ?
    2. This IS major problem. Performance was very poor. I imported the folders last night and waited for approximately 30 min until I decided to turn my computer off. Aperture gave me a message stating that it was still generating previews and asking me if I wanted to quit. I pressed the OK button and turned the computer off. This morning I launced Aperture again and it went back to the spinning wheel on both projects. It must have taken approximately 45 min until the spinning wheels were no longer turning.
    This is a problem for me as I have a library with approximately 15,000 - 20,000 images. The ones I imported last night were CR2 generated by a Canon 1Ds MK II (17 MB each). I can only imagine how long it would have taken had I chosen to import the 120+ MB TIFF images I also have in my library from slide scans.
    My Aperture preferences have been set for Preview Quality = 12 and Limit Preview Size = Don't Limit. I have it set this way as I don't with to have reduced size previews so that (1) they can display with the highest possible quality as I mostly use the full screen mode for viewing and selecting images, and (2) in case I upgrade to a larger monitor in the near future (I have a 23" cinema display but am planning to upgrade to a 30") the previews will still work with that monitor.
    Is this performace typical of Aperture ? I understand my camera is a professional camera that generates large images but isn't Aperture supposed to be a professional application aimed at professional photographers ? And what about those who work with 39 MB images from a Hasselblad or with scanned 120+ MB slide images ?
    Is there something obvious I have forgotten to look at or set up in Aperture ?
    Thank you in advance,
    Joseph Chamberlain

    Steve:
    Thank you very much for your reply to my post and for your suggestions. Some comments about my experience appear below. I am grateful for your help and don't wish in any way to discuss what you recommend below. I just wish to share my view of this issue and also to try to find the best answers for my problem.
    For 1, use File > Import > Folders Into A Project. That will retain your folder
    structure using brown folders and albums.
    See:
    http://www.bagelturf.com/aparticles/library/fivesimple/index.html and
    http://www.bagelturf.com/aparticles/library/brown/index.html and
    http://www.bagelturf.com/aparticles/library/libinadv/index.html
    A. You can't. Projects are the container for everything in Aperture. No
    projects, no images. So just live with them and subnvert them any way you
    like. I don't have "projects" so I just use months, vacations, events, or
    whatever keeps my image collections a reasonable size.
    As an user I would like to have control over my own filing structure. This works quite well in iPhoto and I don't understand why Aperture chose to adopt this less flexible file structure. Also I noticed that the imported iPhoto library appears in Aperture inside a folder with multiple albums. Since Aperture can do this for iPhoto I find it hard to understand why it can't do for other imported images.
    2. Turn off previews and delete the ones you have. When you find you need > them, use them selectively:
    http://www.bagelturf.com/aparticles/previews/pwho/index.html
    As stated in my previous post I always (no exception) use the full screen mode for viewing my images which is similar to a slide show. So according to the web page you reference above I would fall under the category of users that need previews.
    You don't need high res previews. Aperture already generates thumbnails
    for you.
    General speed tips:
    * Get the best video card with the most RAM you can afford
    I can't. My computer is fairly new as it was purchased a little more than 2 years ago. Although it is a fairly new computer Apple no longer offers parts for it. My video card is an ATI Radeon 9600 Pro with 64 MB of VRAM installed. I have contacted Apple about this issue and they tell me there is nothing they can do. I have also contacted both ATI Radeon and nVidia and both have discontinued the only two cards they would work in my system (X800 XT Mac Edition and GeForce 6800, respectively).
    * Smaller screens are faster than larger screens
    My screen is 23" which I would consider to be a medium size screen by today's standards. However, isn't the purpose of working with Aperture to be able to develop a professional workflow ? And don't most professionals like to use large screens to view their work ?
    * Avoid H&S adjustments until all the others are done
    * Make sure you have sufficient RAM (2G minimum, 3G on a Mac Pro)
    My system has 2.5 GB RAM installed. It has been suggested to me that I should add another 1 or 2 GB RAM as it would improve performance significantly. I have no problem doing that and would welcome that solution if I knew for a fact it was going to address my issues. However, I have already invested too much on hardware and software while still finding myself struggling with the issues I have described. Do you think the additional RAM would solve the problem ?
    * Don't use previews unless you need them
    Based on what I have read on the pages you referenced it seems to me I am one of those users who needs previews.
    * Keep projects small. Use blue folders to group projects
    My current filing structure is simple - I four folders each with subfolders containing in average 200 to 1000 images each. Some have as little as 1 image and some have 1000. But the majority would fall in the 300 to 400 images range.
    * Rebuild the database once in a while
    * Quit other apps if memory is restrictive
    It seems in this case that the RAM upgrade I mention above would be helpful. Would it allow me to run other applications while also running Aperture without any noticeable performance alteration ?
    To a great extent you have to rethink your workflow once you use Aperture.
    Many people do a lot of unnecessary things because they are coming from
    an environment that forced them to. Start from scratch and ask yourself
    why you do everything you do. Much of the effort you will find is wasted
    because Aperture either does it for you or make it unnecessary.
    I am trying to simply my workflow as much as I can but not at the expense of quality. Bridge CS2 did a very good job for me. In many ways it was the perfect application althout it didn't have many of the great features I find in Aperture for reviewing and selecting images. First it was simple - all you had to do was to create your own file structure and then point Bridge to the folders as it would create its own previews. Second it was fast - this process happened a lot faster compared to Aperture and Bridge CS3. Third it was high quality - the previews generated were high quality and could be seen with amazing resolution while in slide show viewing mode on my 23" screen. My upgrade to Bridge CS3 was disastrous as (1) it has many bugs Adobe hasn't taken the time to fix, (2) it is slow on average machines requiring the latest hardware to run efficiently which is unrealistic for most consumers and (3) the previews generated are soft and appear pixilated and in poor quality while in slide show view.
    I am going back to Aperture after a very disappointing start as I was one of the very first to purchase the software as soon as it was introduced only to be frustrated with all of its bugs and design flaws. Aperture has one of the best interfaces I have seen on any imaging application and I would really like to use but after this new attempt to use and the barriers I have encountered I am not sure I can.
    Joseph Chamberlain

  • Oracle Forms6i Query Performance issue - Urgent

    Hi All,
    I'm using oracle forms6i and Oracle DB 9i.
    I'm facing the performance issue in query forms.
    In detail block form taking long time to load the data.
    Form contains 2 non data blocks
    1.HDR - 3 input parameters
    2.DETAILS - Grid - Details
    HDR input fields
    1.Company Code
    2.Company ACccount No
    3.Customer Name
    Details Grid is displayed the details.
    Here there are 2 tables involved
    1.Table1 - 1 crore records
    2.Table2 - 4 crore records
    In form procedure one cursor bulid and fetch is done directly and assign the values to form block fields.
    Below i've pasted the query
    SELECT
    t1.entry_dt,
    t2.authoriser_code,
    t1.company_code,
    t1.company_ac_no
    initcap(t1.customer_name) cust_name,
    t2.agreement_no
    t1.customer_id
    FROM
    table1 t1,
    table2 t2
    WHERE
    (t2.trans_no = t1.trans_no or t2.temp_trans_no = t1.trans_no)
    AND t1.company_code = nvl(:hdr.l_company_code,t1.company_code)
    AND t1.company_ac_no = nvl(:hdr.l_company_ac_no,t1.company_ac_no)
    AND lower(t1.customer_name) LIKE lower(nvl('%'||:hdr.l_customer_name||'%' ,t1.customer_name))
    GROUP BY
    t2.authoriser_code,
    t1.company_code,
    t1.company_ac_no,
    t1.customer_name,
    t2.agreement_no,
    t1.customer_id;
    Where Clause Analysis
    1.Condition 1 OR operator (In table2 two different columbs are compared with one column in table)
    2.Like Operator
    3.All the columns has index but not used properly always full table scan
    4.NVL chk
    5.If i run the qry in backend means coming little fast,front end very slow
    Input Parameter - Query retrival data - limit
    Only compnay code means record count will be 50 - 500 records -
    Only compnay code and comp ac number means record count will be 1-5
    Only compnay code,omp ac number and customer name means record count will be 1 - 5 records
    I have tried following ways
    1.Split the query using UNIOIN (OR clause seaparted) - Nested loops COST 850 , Nested loops COST 750 - index by row id - cost is 160 ,index by row id - cost is 152 full table access.................................
    2.Dynamic SQL build - 'DBMS_SQL.DEFINE COLUMN .....
    3.Given onlu one input parameter - Nested loops COST 780 , Nested loops COST 780 - index by row id - cost is 148 ,index by row id - cost is 152 full table access.................................
    Still im facing the same issue.
    Please help me out on this.
    Thanks and Regards,
    Oracle1001

    Sudhakar P wrote:
    the below query its take more than one minute while updating the records through pro*c.
    Execute 562238 161.03 174.15 7 3932677 2274833 562238Hi Sudhakar,
    If the database is capable of executing 562,238 update statements in one minute, then that's pretty good, don't you think.
    Your real problem is in the application code which probably looks something like this in pseudocode:
    for i in (some set containing 562,238 rows)
    loop
      <your update statement with all the bind variables>
    end loop;If you transform your code to do a single update statement, you'll gain a lot of seconds.
    Regards,
    Rob.

  • BEx Analyzer: User ID based performance issue

    Hello Ladies and Gents,
    <b>The issue:</b>
    My BW team just upgraded our system to 2004s and we are experiencing an odd userid based performance issue.  If we run a query from the BEx Analyzer with user ID 'A' it takes about 3min for the variable selection screen to appear. If I log into the same machine user ID 'A' was using on my user ID B the query variable selection screen appears within seconds. What could possibly cause this?
    <b>What we know so far:</b>
    1. Investigated the security roles, seems like that is not the issue.
    2. It is PC client independent.  Two different user IDs(A and B) on the same machine running the same query in the same way (clicking through the BEx browser) produces different response times for the appearance of the variable selection screen. 
    Points will be rewarded and help will be greatly appreciated!

    User specific personalization is retrieved before displaying the input variables. That might be a possibility, but hard to see it making such a difference.  Do you always try the sequence of User A, then User B, or have you confirmed that when you start with User B, it is quick, and tehn slow whne trying User A?
    Probably the best approach is to activate Trace and then logon with User A, turn trace off and print or save, then do the same thing for User B and compare.  The trace will show you all the various SQL stmts and such that run as part of your trying to launch the query.
    Please post back anything you learn.
    Some info on Personalization  for the Help pages.
    Personalization in BEx
    Use
    This function allows users to fill variables with user-specific values, to save user-specific accesses to BI objects for the history view in the BEx Open dialog box, and to save user-specific start views for Web applications.
    Integration
    The personalized data is stored in different DataStore objects, according to the personalization area.
    ·        User-specific variable values are stored in the DataStore object 0Pers_VAR.
    ·        Personalized data for the history view is stored in the DataStore object 0Pers_BOD.
    ·        Personalized start views for the Web application are stored in the DataStore object 0Pers_WTE.

  • APEX 4.1 Applicaton Performance issue!

    Problem:
    Virtual Circuit wait is running high.
    Apex application pages loads much slower comparing to our old environment APEX 3.0 on 10g, apache server.
    Issues after installing apex with embedded PL/SQL ... OEM showing Virtual Circuit wait is running high ... APEX application pages loads with significant delays specially when first loaded.
    Environment:
    New 11g server with New apex 4.0 and updated to 4.1 with embedded pl/sql, windows server 2008 64 bit.
    Migrated old application from 3.0 to 4.0 ---- No problems other than performance issue, slow pages load.
    The reason why I went with the embeded pl/sql and not the apache because Windows server 2008 R2 and the apache HTTP server (conpanion cd) could not be installed on this version.
    We did not have this issue with 10g apex 3.0 running with an apache server?
    Where can I find HTTP server for windows server 2008 R2 64 bit?
    Is this an embedded PL/SQL issue install on windows server 2008 x64?
    Others ...
    There is no Companion Disk for the Oracle Database 11g Release 1 (11.1.0.7.0) for Microsoft Windows Server 2008 x64 therefore the Http server is not included in the install or packaged software (companion or examples). The Oracle database 10g had the HTTP server in the companion disks. The 11 g examples download does not include the APACHE HTTP Server !!!!! Did anyone find a solution for this problem, or is the prior version of Oracle database 10 R 2 -HTTP SERVER (Companion Disk) windows server 2008 x64 compatable with 11g Release 1 installed. Can I install the companion disk included in the 10g R2 (Http server) with Oracle 11 g Release 1. Again for windows server 2008 x64.
    Thanks,
    Mhnd

    Dimitri,
    Thanks for taking the time to answer my question. So you are saying the listener which is my third choice should eliminate this issue. I know oracle have three choices for the web server but I'm only familiar with the two mentioned above, the APEX installation document provide information about the listener but haven't gone that path yet. The apache 2 only comes packaged for 32 bit systems (last I checked 2.16), and they don't have the 64bit version. I'm going to try the listener approach and see how it goes. Hopefully this will solve the issue with page loading slow. Should I uninstall the embedded PL/SQL or just continue with the listener install?
    Mobra,
    Thanks for your suggestions but I'm going to stick with the Oracle suggested methods for now. Hopefully some will work out for our environment.
    Thanks,
    Muhannad.

  • Performance issue in RSEG

    Hi All,
    I got a querry having performance issue.
              SELECT  belnr
                      gjahr
                      buzei
                      xblnr
                      lfbnr
              FROM  rseg APPENDING TABLE l_it_rseg
              FOR ALL ENTRIES IN l_it_bkpf
                WHERE   belnr  IN l_r_belnr
                 AND    gjahr  = l_it_bkpf-gjahr.
    As per me, two of the primary fields are used in selection and should not have much scope for improvemnet.
    Still any suggestions so that I can optimise the querry?

    Hi all,
    Thanks for the quick replies.I need to improve the performance where the basis says might have the problem.Here original developer seems to have gathered all the belnr's in range table and used that with year from l_it_bkpf.Nevertheless l_r_belnr contents are first 10 characters from l_it_bkpf-awkey.So ineffect only one table is used i.e. l_it_bkpf.
       Can I change the code to like :
    DATA : Begin of l_wa_bkpf_temp occurs 0,
                 belnr TYPE bkpf-belnr,
                 gjahr TYPE bkpf-gjahr,
                End of l_wa_bkpf.
    Loop at l_it_bkpf  into l_wa_bkpf.
    l_wa_bkpf_temp-belnr = l_wa_bkpf-awkey+0(10).
    l_wa_bkpf_temp-gjahr = l_wa_bkpf-gjahr.
    Endloop.
    Sort l_it_bkpf_temp by belnr gjahr.
    Delete adjacent duplicates from l_it_bkpf comparing belnr gjahr.
    and then ,
            SELECT  belnr
                    gjahr
                    buzei
                    xblnr
                    lfbnr
              FROM  rseg APPENDING TABLE l_it_rseg
               FOR  ALL ENTRIES IN l_it_bkpf_temp
              WHERE belnr  = l_it_bkpf_temp-belnr
               AND gjahr  = l_it_bkpf_temp-gjahr.
    Can this will improve performance significatly?
    Or can we improve speed at database level as well? like by creating index..

  • Multiple table select Performance Issue

    Hi,
    I would like to get an opinion which from these query which is faster and has a performance issue..
    SELECT EMP_ID, NAME, DEPT_NAME
    FROM EMP, DEPT
    WHERE EMP_ID = DEPT_ID;
    or
    SELECT EMP_ID, NAME, (SELECT DEPT_NAME FROM DEPT WHERE ID = P_ID)
    FROM EMP
    WHERE EMP_ID = P_ID;

    lets say that EMP_ID on Dept table is linked to EMP_ID table on EMP..Well...I don't get your design, but the two queries may return different results.
    Comparing the performance doesn't make sense.
    Nevertheless, the only way is to run them both and see which one is faster or see which one has the lowest IO.
    There's no way we can tell you which is faster by just looking at the text of the queries.
    Post some explain plans or traces.

  • Performance issue on this.a = a

    Hello to all the java gurus. I was wondering on whether there is a performance issue on the coding below :
    [1] public void setName( String name ) { this.name = name; }
    vs.
    [2] public void setName( String _name ) { name = _name; }
    If i use [1], will it requires extra computation of finding current object followed by finding its name data member compare to [2] which directly distinguished by using different variable name?
    many thanks for those who try to solve this puzzle of mine.

    I agree with dubwai.. my variable names are pretty
    long, but descriptive. I also use (as a holdover from
    my corporate project days) a naming convention that
    specifies which variables are local, passed as params,
    or global, which eliminates the need for this. in most
    cases. If you need to use this. because you
    have two variable names that are identical, I would be
    questioning if one couldn't be named something else.I think it there are just some errors that can't be avoided by anything less than careful programming. I think a lot of times people obsess over things like variable naming schemes while writing 200 line methods with multiple nested and unnested loops. The easiest way to make code readable is to break out everything in 5 to 20 line methods (give or take some lines depending on how you count.) Of course, sometimes this isn't feasible or useful but it's still a good rule of thumb. If you can acheive this, the variable naming scheme isn't really a significant factor in readability. You could name everything like y4gr5x6 and you'd still be able to figure it out.

Maybe you are looking for

  • How do I make an iPhone 3G an authorized device on iTunes?

    My kids were handed down an old iPhone 3G with no phone service so they could use it like an iPod. I signed out of the previous owner's AppleID account and signed in with my AppleID on the phone, but I can't get to any of my iTunes songs. When I go t

  • How to speed up my lenovo startup?

    What Lenovo services can I disable to speed up my computer? I included a Hijackthis Log: Logfile of Trend Micro HijackThis v2.0.2 Scan saved at 9:02:04 AM, on 9/9/2009 Platform: Windows Vista SP2 (WinNT 6.00.1906) MSIE: Internet Explorer v8.00 (8.00.

  • I have broken the charing port on my B1 Iconia Tablet - how can I get it replaced?

    Hi All, I have broken the charing port on my BI Iconia tablet.  Really upset as have only had for just over a year.  The port is really delicate, can I get it replaced?  Is it easy for me to do if so what do i need?  Many thanks

  • How to sepup apple tv with receiver?

    I have a Yamaha HTR-6230 AV Receiver, and I would like connect apple tv throught it.

  • Disable all the input field in Manage Internet Access

    I have find one error that when i use adobe reader with login from my window AD a/c, i cannot use the Adobe Reader Trust Manage because all input field are disable, it is not happen in early time, so could anybody help me to solve this, thx..