Performance Problem with Nested Select
I have an urgent performance question, I run a nested select like this one
SELECT tabname
INTO ls_dd02l
FROM dd02l
WHERE tabname LIKE c_feld
AND buffered IS NOT NULL.
SELECT tabname fieldname keyflag position
INTO CORRESPONDING FIELDS OF ls_dd03l
FROM dd03l
WHERE tabname = ls_dd02l-tabname
AND fieldname IN ('MANDT', 'CLIENT', 'CLNT')
AND keyflag = 'X'.
IF ( sy-subrc EQ 0 ).
wa-tabname = ls_dd03l-tabname.
wa-fieldname = ls_dd03l-fieldname.
wa-keyflag = ls_dd03l-keyflag.
wa-position = ls_dd03l-position.
APPEND wa TO itab.
ENDIF.
ENDSELECT.
ENDSELECT.
It is taking about 20sec, which is much too long.
How can I improve the performance.
Points rewarded!
S.B.
Hi Siegfried,
As Vinay said u can use INNER JOIN to get the data from both database tables
or u can use FOR ALL ENTRIES statement.
You can use the option FOR ALL ENTRIES to replace nested select loops by operations on internal tables. This can significantly improve the performance for large sets of selected data.
The above statement is from Library. Please check this link
http://help.sap.com/saphelp_nw04/helpdata/en/fc/eb3a1f358411d1829f0000e829fbfe/content.htm
Tabular Conditions sub heading
SELECT a~tabname
b~fieldname
b~keyflag
b~position
FROM dd02l as a INNER JOIN dd03l as b
ON a~tabname = b~tabname
INTO TABLE itab
WHERE a~tabname LIKE c_feld
AND buffered IS NOT NULL
AND fieldname IN ('MANDT', 'CLIENT', 'CLNT')
AND keyflag = 'X'.
OR
SELECT tabname
INTO TABLE lt_dd02l
FROM dd02l
WHERE tabname LIKE c_feld
AND buffered IS NOT NULL.
IF NOT lt_dd02l IS INITIAL.
SELECT tabname fieldname keyflag position
INTO CORRESPONDING FIELDS OF TABLE itab
FROM dd03l
FOR ALL ENTRIES IN lt_dd02l
WHERE tabname = lt_dd02l-tabname
AND fieldname IN ('MANDT', 'CLIENT', 'CLNT')
AND keyflag = 'X'.
ENDIF.
Please check this link
/people/rob.burbank/blog/2007/03/19/joins-vs-for-all-entries--which-performs-better
You have to look at the primary keys..
MANDT
STLTY
STLNR
STLAL
STLKN
STASZ
MANDT
STLTY
STLNR
STLKN
STPOZ
You need the stlty for both tables stas and stpo
The on condition between stas and stpo is obvious, will help a
bit.
It would be much better, if you could add it to the WHERE Condition.
Do you know it?
If not, then as the BOM categories are not so many,
Try
select distinct stlty
from stas.
and add the values to you where condition as
AND s1-stlty in ( ....... )
This should improve the performance.
I don't kknow whether the BOM Categories can change in future.
instead of a fixed in, you could add a subselect from a customizing table.
I am quite confident that the solution I proposed will be much faster than the FOR ALL ENTRIES.
But with more complicated joins you really have to try it.
There is no general rule about the number of tables in a join, there are perfectly running joins with 5 tables
and there are porblems with 2 tables.
You must analyze the indexes, it it is clear which index will support the accesses then it will work fine.
The FOR ALL ENTRIES is by construction much slower!
Best regards,
raam
Similar Messages
-
Problem with nested select in procedure and order by
Hi,
I have this procedure:
CREATE OR REPLACE PROCEDURE Mkt_Flussi_Giornalieri2
( idGruppo IN VARCHAR2
, dataInizio IN DATE
, dataFine IN DATE
, startRow IN NUMBER
, endRow IN NUMBER
, column_order in varchar2
--, order_name in varchar2
, recordsetCursor OUT SYS_REFCURSOR
, countRow OUT NUMBER
) IS
order_clause varchar2(200) := ' ';
sql_stm varchar2(32000);
BEGIN
IF column_order IS NOT NULL
THEN
order_clause := column_order;
ELSE
order_clause := ' stato DESC ';
END IF;
dbms_output.put_line('clausola:'||order_clause);
sql_stm:='
SELECT idflusso, descrizioneFlusso, dataRiferimento, strDataRiferimento,
stato, dataElaborazione, ultimoMessaggio, livello, utentiRiferimento,
exec_seq, provider_description, log_info FROM
(SELECT idflusso, descrizioneFlusso, dataRiferimento, strDataRiferimento,
stato, dataElaborazione, ultimoMessaggio, livello, utentiRiferimento,
exec_seq, provider_description, log_info FROM
(SELECT
temp.flow_id AS idFlusso,
MKT_FLOW.flow_id || '' - '' || MKT_FLOW.flow_description || ''('' || temp.exec_seq || '')'' AS descrizioneFlusso,
TO_DATE(temp.date_id,''yyyymmddhh24miss'') AS dataRiferimento,
TO_CHAR(TO_DATE(temp.date_id,''yyyymmddhh24miss''),''dd/mm/yyyy'')||'' h. ''||TO_CHAR(TO_DATE(temp.date_id,''yyyymmddhh24miss''),''hh24:mi'') AS strDataRiferimento,
temp.status AS stato, temp.end_time AS dataElaborazione, DECODE(temp.status,3, ERROR_DESC, 1, TRACE_DES) AS ultimoMessaggio,
DECODE(temp.status,3, error_level, 1, fk_trace_level) AS livello,
Get_Group_Description(MKT_FLOW.flow_id) AS utentiRiferimento, temp.exec_seq AS exec_seq, mp.provider_description,
mp.provider_link, mfc.log_info
FROM (
SELECT v.*, tr.TRACE_ID, tr.TRACE_DES , tr.trace_date, tr.fk_trace_level, e.ERROR_ID, e.ERROR_CODE, NVL(e.ERROR_DESC, er.ERROR_DESC) AS ERROR_DESC, e.error_date, e.error_level,
MIN(e.error_id) OVER (PARTITION BY e.fk_exec_seq) eid,
MAX(tr.trace_id) OVER (PARTITION BY tr.fk_exec_seq) tid
FROM (
SELECT fc.*, MAX(exec_seq) OVER (PARTITION BY flow_id, flow_frequency, n_run, date_id) exsq
FROM mkt_flow_conf_view fc
WHERE TRUNC(end_time) >= :1
AND TRUNC(end_time) <= :2
) v, MKT_ERROR er, MKT_FLOW_ERROR e, MKT_FLOW_TRC tr
WHERE v.exec_seq = v.exsq
AND e.fk_exec_seq (+) = v.exec_seq
AND tr.fk_exec_seq (+) = v.exec_seq
AND er.error_id (+) = e.error_code
) temp
INNER JOIN MKT_FLOW
ON MKT_FLOW.flow_id = temp.flow_id AND MKT_FLOW.n_run = temp.n_run AND MKT_FLOW.flow_frequency = temp.flow_frequency
INNER JOIN MKT_FLOW_GROUP ON MKT_FLOW_GROUP.flow_id = MKT_FLOW.flow_id
LEFT OUTER JOIN
(SELECT DISTINCT flow_id, log_info
FROM mkt_flow_conf) mfc
ON mkt_flow.flow_id = mfc.flow_id
, mkt_provider mp
WHERE NVL(error_id, -1) = NVL(eid, -1)
AND NVL(trace_id, -1) = NVL(tid, -1)
AND MKT_FLOW_GROUP.group_id=:3
AND NVL (mkt_flow.fk_provider_id, '' '') =
NVL (mp.provider_id, '' '') )
WHERE ROWNUM <= :4
MINUS
(SELECT idflusso, descrizioneFlusso, dataRiferimento, strDataRiferimento,
stato, dataElaborazione, ultimoMessaggio, livello, utentiRiferimento,
exec_seq, provider_description, log_info FROM
(SELECT
temp.flow_id AS idFlusso,
MKT_FLOW.flow_id || '' - '' || MKT_FLOW.flow_description || ''('' || temp.exec_seq || '')'' AS descrizioneFlusso,
TO_DATE(temp.date_id,''yyyymmddhh24miss'') AS dataRiferimento,
TO_CHAR(TO_DATE(temp.date_id,''yyyymmddhh24miss''),''dd/mm/yyyy'')||'' h. ''||TO_CHAR(TO_DATE(temp.date_id,''yyyymmddhh24miss''),''hh24:mi'') AS strDataRiferimento,
temp.status AS stato, temp.end_time AS dataElaborazione, DECODE(temp.status,3, ERROR_DESC, 1, TRACE_DES) AS ultimoMessaggio,
DECODE(temp.status,3, error_level, 1, fk_trace_level) AS livello,
Get_Group_Description(MKT_FLOW.flow_id) AS utentiRiferimento, temp.exec_seq AS exec_seq, mp.provider_description,
mp.provider_link, mfc.log_info
FROM (
SELECT v.*, tr.TRACE_ID, tr.TRACE_DES , tr.trace_date, tr.fk_trace_level, e.ERROR_ID, e.ERROR_CODE, NVL(e.ERROR_DESC, er.ERROR_DESC) AS ERROR_DESC, e.error_date, e.error_level,
MIN(e.error_id) OVER (PARTITION BY e.fk_exec_seq) eid,
MAX(tr.trace_id) OVER (PARTITION BY tr.fk_exec_seq) tid
FROM (
SELECT fc.*, MAX(exec_seq) OVER (PARTITION BY flow_id, flow_frequency, n_run, date_id) exsq
FROM mkt_flow_conf_view fc
WHERE TRUNC(end_time) >= :5
AND TRUNC(end_time) <= :6
) v, MKT_ERROR er, MKT_FLOW_ERROR e, MKT_FLOW_TRC tr
WHERE v.exec_seq = v.exsq
AND e.fk_exec_seq (+) = v.exec_seq
AND tr.fk_exec_seq (+) = v.exec_seq
AND er.error_id (+) = e.error_code
) temp
INNER JOIN MKT_FLOW
ON MKT_FLOW.flow_id = temp.flow_id AND MKT_FLOW.n_run = temp.n_run AND MKT_FLOW.flow_frequency = temp.flow_frequency
INNER JOIN MKT_FLOW_GROUP ON MKT_FLOW_GROUP.flow_id = MKT_FLOW.flow_id
LEFT OUTER JOIN
(SELECT DISTINCT flow_id, log_info
FROM mkt_flow_conf) mfc
ON mkt_flow.flow_id = mfc.flow_id
, mkt_provider mp
WHERE NVL(error_id, -1) = NVL(eid, -1)
AND NVL(trace_id, -1) = NVL(tid, -1)
AND MKT_FLOW_GROUP.group_id=:7
AND NVL (mkt_flow.fk_provider_id, '' '') =
NVL (mp.provider_id, '' '') )
WHERE ROWNUM <= :8
) ) ORDER BY :9 ' ;
dbms_output.enable(30000);
dbms_output.put_line(sql_stm);
OPEN recordsetCursor FOR sql_stm USING dataInizio, dataFine, idGruppo, endRow, dataInizio, dataFine, idGruppo, startRow, order_clause;
SELECT COUNT(*) INTO countRow FROM
(SELECT
temp.flow_id AS idFlusso,
MKT_FLOW.flow_id || ' - ' || MKT_FLOW.flow_description || '(' || temp.exec_seq || ')' AS descrizioneFlusso,
TO_DATE(temp.date_id,'yyyymmddhh24miss') AS dataRiferimento,
TO_CHAR(TO_DATE(temp.date_id,'yyyymmddhh24miss'),'dd/mm/yyyy')||' h. '||TO_CHAR(TO_DATE(temp.date_id,'yyyymmddhh24miss'),'hh24:mi') AS strDataRiferimento,
temp.status AS stato, temp.end_time AS dataElaborazione, DECODE(temp.status,3, ERROR_DESC, 1, TRACE_DES) AS ultimoMessaggio,
DECODE(temp.status,3, error_level, 1, fk_trace_level) AS livello,
Get_Group_Description(MKT_FLOW.flow_id) AS utentiRiferimento, temp.exec_seq AS exec_seq, mp.provider_description,
mp.provider_link, mfc.log_info
FROM (
SELECT v.*, tr.TRACE_ID, tr.TRACE_DES , tr.trace_date, tr.fk_trace_level, e.ERROR_ID, e.ERROR_CODE, NVL(e.ERROR_DESC, er.ERROR_DESC) AS ERROR_DESC, e.error_date, e.error_level,
MIN(e.error_id) OVER (PARTITION BY e.fk_exec_seq) eid,
MAX(tr.trace_id) OVER (PARTITION BY tr.fk_exec_seq) tid
FROM (
SELECT fc.*, MAX(exec_seq) OVER (PARTITION BY flow_id, flow_frequency, n_run, date_id) exsq
FROM mkt_flow_conf_view fc
WHERE TRUNC(end_time) >= dataInizio
AND TRUNC(end_time) <= dataFine
) v, MKT_ERROR er, MKT_FLOW_ERROR e, MKT_FLOW_TRC tr
WHERE v.exec_seq = v.exsq
AND e.fk_exec_seq (+) = v.exec_seq
AND tr.fk_exec_seq (+) = v.exec_seq
AND er.error_id (+) = e.error_code
) temp
INNER JOIN MKT_FLOW
ON MKT_FLOW.flow_id = temp.flow_id AND MKT_FLOW.n_run = temp.n_run AND MKT_FLOW.flow_frequency = temp.flow_frequency
INNER JOIN MKT_FLOW_GROUP ON MKT_FLOW_GROUP.flow_id = MKT_FLOW.flow_id
LEFT OUTER JOIN
(SELECT DISTINCT flow_id, log_info
FROM mkt_flow_conf) mfc
ON mkt_flow.flow_id = mfc.flow_id
, mkt_provider mp
WHERE NVL(error_id, -1) = NVL(eid, -1)
AND NVL(trace_id, -1) = NVL(tid, -1)
AND MKT_FLOW_GROUP.group_id=idGruppo
AND NVL (mkt_flow.fk_provider_id, ' ') =
NVL (mp.provider_id, ' '));
END Mkt_Flussi_Giornalieri2;
/When I call the procedure, from java, I receive this error:
>
Caused by: java.sql.SQLException: invalid column index
at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:112)
at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:146)
at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:208)
at oracle.jdbc.driver.OracleResultSetImpl.getString(OracleResultSetImpl.java:385)
at it.edison.markettracker.dao.spring.VistaFlussiGiornalieriDaoImpl.mapRow(VistaFlussiGiornalieriDaoImpl.java:155)
at it.edison.markettracker.dao.spring.VistaFlussiGiornalieriDaoImpl.mapRow(VistaFlussiGiornalieriDaoImpl.java:1)
at org.springframework.jdbc.core.RowMapperResultSetExtractor.extractData(RowMapperResultSetExtractor.java:92)
at org.springframework.jdbc.core.JdbcTemplate.processResultSet(JdbcTemplate.java:1124)
at org.springframework.jdbc.core.JdbcTemplate.extractOutputParameters(JdbcTemplate.java:1085)
at org.springframework.jdbc.core.JdbcTemplate$5.doInCallableStatement(JdbcTemplate.java:997)
at org.springframework.jdbc.core.JdbcTemplate.execute(JdbcTemplate.java:936)
... 26 more
When I call the procedure from toad in this way:
SET serveroutput ON
DECLARE
TROVATI SYS_REFCURSOR;
NUMERO_TROVATI NUMBER;
BEGIN
DBMS_OUTPUT.ENABLE(30000);
dbms_output.put_line('INIZIO');
Mkt_Flussi_Giornalieri2(1, trunc(sysdate), trunc(sysdate), 100, 50, null, TROVATI, NUMERO_TROVATI);
dbms_output.put_line('RECORD TROVATI:'||NUMERO_TROVATI);
END; I don't receive any error messages but I don't see any message.
Why this behaviour? I work on this procedure from the last monday. Please help me. I need to call the procedure from java.
Thanks, bye bye.
Edited by: Abdujaparov on Mar 5, 2009 3:44 PMHi,
I have solved the problem, I forgot a parameter in the select, so java tells the an error. But now I have another problem. The procedure doesn't execute the order by. I pass the couple column_name order_type in a string as ("provider_description desc") dinamically but the procedure doesn't execute the ordering. Why?
The problem is in the dynamic query, I think:
sql_stm:='
SELECT idflusso, descrizioneFlusso, dataRiferimento, strDataRiferimento,
stato, dataElaborazione, ultimoMessaggio, livello, utentiRiferimento,
exec_seq, provider_description, provider_link, log_info FROM
(SELECT idflusso, descrizioneFlusso, dataRiferimento, strDataRiferimento,
stato, dataElaborazione, ultimoMessaggio, livello, utentiRiferimento,
exec_seq, provider_description, provider_link, log_info FROM
(SELECT
temp.flow_id AS idFlusso,
MKT_FLOW.flow_id || '' - '' || MKT_FLOW.flow_description || ''('' || temp.exec_seq || '')'' AS descrizioneFlusso,
TO_DATE(temp.date_id,''yyyymmddhh24miss'') AS dataRiferimento,
TO_CHAR(TO_DATE(temp.date_id,''yyyymmddhh24miss''),''dd/mm/yyyy'')||'' h. ''||TO_CHAR(TO_DATE(temp.date_id,''yyyymmddhh24miss''),''hh24:mi'') AS strDataRiferimento,
temp.status AS stato, temp.end_time AS dataElaborazione, DECODE(temp.status,3, ERROR_DESC, 1, TRACE_DES) AS ultimoMessaggio,
DECODE(temp.status,3, error_level, 1, fk_trace_level) AS livello,
Get_Group_Description(MKT_FLOW.flow_id) AS utentiRiferimento, temp.exec_seq AS exec_seq, mp.provider_description,
mp.provider_link, mfc.log_info
FROM (
SELECT v.*, tr.TRACE_ID, tr.TRACE_DES , tr.trace_date, tr.fk_trace_level, e.ERROR_ID, e.ERROR_CODE, NVL(e.ERROR_DESC, er.ERROR_DESC) AS ERROR_DESC, e.error_date, e.error_level,
MIN(e.error_id) OVER (PARTITION BY e.fk_exec_seq) eid,
MAX(tr.trace_id) OVER (PARTITION BY tr.fk_exec_seq) tid
FROM (
SELECT fc.*, MAX(exec_seq) OVER (PARTITION BY flow_id, flow_frequency, n_run, date_id) exsq
FROM mkt_flow_conf_view fc
WHERE TRUNC(end_time) >= :1
AND TRUNC(end_time) <= :2
) v, MKT_ERROR er, MKT_FLOW_ERROR e, MKT_FLOW_TRC tr
WHERE v.exec_seq = v.exsq
AND e.fk_exec_seq (+) = v.exec_seq
AND tr.fk_exec_seq (+) = v.exec_seq
AND er.error_id (+) = e.error_code
) temp
INNER JOIN MKT_FLOW
ON MKT_FLOW.flow_id = temp.flow_id AND MKT_FLOW.n_run = temp.n_run AND MKT_FLOW.flow_frequency = temp.flow_frequency
INNER JOIN MKT_FLOW_GROUP ON MKT_FLOW_GROUP.flow_id = MKT_FLOW.flow_id
LEFT OUTER JOIN
(SELECT DISTINCT flow_id, log_info
FROM mkt_flow_conf) mfc
ON mkt_flow.flow_id = mfc.flow_id
, mkt_provider mp
WHERE NVL(error_id, -1) = NVL(eid, -1)
AND NVL(trace_id, -1) = NVL(tid, -1)
AND MKT_FLOW_GROUP.group_id=:3
AND NVL (mkt_flow.fk_provider_id, '' '') =
NVL (mp.provider_id, '' '') )
WHERE ROWNUM <= :4
MINUS
(SELECT idflusso, descrizioneFlusso, dataRiferimento, strDataRiferimento,
stato, dataElaborazione, ultimoMessaggio, livello, utentiRiferimento,
exec_seq, provider_description, provider_link, log_info FROM
(SELECT
temp.flow_id AS idFlusso,
MKT_FLOW.flow_id || '' - '' || MKT_FLOW.flow_description || ''('' || temp.exec_seq || '')'' AS descrizioneFlusso,
TO_DATE(temp.date_id,''yyyymmddhh24miss'') AS dataRiferimento,
TO_CHAR(TO_DATE(temp.date_id,''yyyymmddhh24miss''),''dd/mm/yyyy'')||'' h. ''||TO_CHAR(TO_DATE(temp.date_id,''yyyymmddhh24miss''),''hh24:mi'') AS strDataRiferimento,
temp.status AS stato, temp.end_time AS dataElaborazione, DECODE(temp.status,3, ERROR_DESC, 1, TRACE_DES) AS ultimoMessaggio,
DECODE(temp.status,3, error_level, 1, fk_trace_level) AS livello,
Get_Group_Description(MKT_FLOW.flow_id) AS utentiRiferimento, temp.exec_seq AS exec_seq, mp.provider_description,
mp.provider_link, mfc.log_info
FROM (
SELECT v.*, tr.TRACE_ID, tr.TRACE_DES , tr.trace_date, tr.fk_trace_level, e.ERROR_ID, e.ERROR_CODE, NVL(e.ERROR_DESC, er.ERROR_DESC) AS ERROR_DESC, e.error_date, e.error_level,
MIN(e.error_id) OVER (PARTITION BY e.fk_exec_seq) eid,
MAX(tr.trace_id) OVER (PARTITION BY tr.fk_exec_seq) tid
FROM (
SELECT fc.*, MAX(exec_seq) OVER (PARTITION BY flow_id, flow_frequency, n_run, date_id) exsq
FROM mkt_flow_conf_view fc
WHERE TRUNC(end_time) >= :5
AND TRUNC(end_time) <= :6
) v, MKT_ERROR er, MKT_FLOW_ERROR e, MKT_FLOW_TRC tr
WHERE v.exec_seq = v.exsq
AND e.fk_exec_seq (+) = v.exec_seq
AND tr.fk_exec_seq (+) = v.exec_seq
AND er.error_id (+) = e.error_code
) temp
INNER JOIN MKT_FLOW
ON MKT_FLOW.flow_id = temp.flow_id AND MKT_FLOW.n_run = temp.n_run AND MKT_FLOW.flow_frequency = temp.flow_frequency
INNER JOIN MKT_FLOW_GROUP ON MKT_FLOW_GROUP.flow_id = MKT_FLOW.flow_id
LEFT OUTER JOIN
(SELECT DISTINCT flow_id, log_info
FROM mkt_flow_conf) mfc
ON mkt_flow.flow_id = mfc.flow_id
, mkt_provider mp
WHERE NVL(error_id, -1) = NVL(eid, -1)
AND NVL(trace_id, -1) = NVL(tid, -1)
AND MKT_FLOW_GROUP.group_id=:7
AND NVL (mkt_flow.fk_provider_id, '' '') =
NVL (mp.provider_id, '' '') )
WHERE ROWNUM <= :8
) ) ORDER BY :9' ;
OPEN recordsetCursor FOR sql_stm USING dataInizio, dataFine, idGruppo, endRow, dataInizio, dataFine, idGruppo, startRow, order_clause;Where order_clause is defined so:
IF column_order IS NOT NULL
THEN
order_clause := column_order;
ELSE
order_clause := ' stato DESC ';
END IF;If I insert manually a name of a column and a type of ordering (asc or desc) the ordering is executed correctly. How can I solve this issue?
Thanks, bye bye. -
Performance problem with sdn_nn - new 10g install
I am having a performance problem with sdn_nn after migrating to a new machine. The old Oracle version was 9.0.1.4. The new is 10g. The new machine is faster in general. Most (non-spatial) batch processes run in half the time. However, the below statement is radically slower. The below statement ran in 45 minutes before. On the new machine it hasn't finished after 10 hours. I am able to get a 5% sample of the customers to finish in 45 minutes.
Does anyone have any ideas on how to approach this problem? Any chance something isn't installed correctly on the new machine (the nth version of the query finishe, albeit 20 times slower)?
Appreciate any help. Thanks.
- Jack
create table nearest_store
as
select /*+ ordered */
a.customer_id,
b.store_id nearest_store,
round(mdsys.sdo_nn_distance(1),4) distance
from customers a,
stores b
where mdsys.sdo_nn(
b.geometry,
a.geometry,
'sdo_num_res=1, unit=mile',
1
) = 'TRUE'
;Dan,
customers 110,000 (involved in this query)
stores 28,000
Here is the execution plan on the current machine:
CREATE TABLE STATEMENT cost = 81947
LOAD AS SELECT
PX COORDINATOR
PX SEND QC (RANDOM) :TQ10000
ROW NESTED LOOPS
1 1 PX BLOCK ITERATOR
1 1ROW TABLE ACCESS FULL CUSTOMERS
1 3 PARTITION RANGE ALL
1 3 TABLE ACCESS BY LOCAL INDEX ROWID STORES
DOMAIN INDEX STORES_SIDX
I can't capture the execution plan on the old database. It is gone. I don't remember it being any different from the above (full scan customers, probe stores index once for each row in customers).
I am trying the query without the create table (just doing a count). I'll let you know on that one.
I am at 10.0.1.3.
Here is how I created the index:
create index stores_sidx
on stores(geometry)
indextype is mdsys.spatial_index LOCAL
Note that the stores table is partitioned by range on store type. There are three store types (each in its own partition). The query returns the nearest store of each type (three rows per customer). This is by design (based on the documented behavior of sdo_nn).
In addition to running the query without the CTAS, I am also going try running it on a different machine tonight. I let you know how that turns out.
The reason I ask about the install, is that the Database Quick Installation Guide for Solaris says this:
"If you intend to use Oracle JVM or Oracle interMedia, you must install the Oracle Database 10g Products installation type from the Companion CD. This installation optimizes the performance of those products on your system."
And, the Database Installlation Guide says:
"If you plan to use Oracle JVM or Oracle interMedia, Oracle strongly recommends that you install the natively compiled Java libraries (NCOMPs) used by those products from the Oracle Database 10g Companion CD. These libraries are required to improve the performance of the products on your platform."
Based on that, I am suspicious that maybe I have the product installed on the new machine, but not correctly (forgot to set fast=true).
Let me know if you think of anything else you'd like to see. Thanks.
- Jack -
Performance Problems with "For all Entries" and a big internal table
We have big Performance Problems with following Statement:
SELECT * FROM zeedmt_zmon INTO TABLE gt_zmon_help
FOR ALL ENTRIES IN gt_zmon_help
WHERE
status = 'IAI200' AND
logdat IN gs_dat AND
ztrack = gt_zmon_help-ztrack.
In the internal table gt_zmon_help are over 1000000 entries.
Anyone an Idea how to improve the Performance?
Thank you!>
Matthias Weisensel wrote:
> We have big Performance Problems with following Statement:
>
>
SELECT * FROM zeedmt_zmon INTO TABLE gt_zmon_help
> FOR ALL ENTRIES IN gt_zmon_help
> WHERE
> status = 'IAI200' AND
> logdat IN gs_dat AND
> ztrack = gt_zmon_help-ztrack.
>
> In the internal table gt_zmon_help are over 1000000 entries.
> Anyone an Idea how to improve the Performance?
>
> Thank you!
You can't expect miracles. With over a million entries in your itab any select is going to take a bit of time. Do you really need all these records in the itab? How many records is the select bringing back? I'm assuming that you have got and are using indexes on your ZEEDMT_ZMON table.
In this situation, I'd first of all try to think of another way of running the query and restricting the amount of data, but if this were not possible I'd just run it in the background and accept that it is going to take a long time. -
Performance problem with ojdbc14.jar
Hi,
We are having performance problem with ojdbc14.jar in selecting and updating (batch updates) entries in a table. The queries are taking minutes to execute. The same java code works fine with classes12.zip ans queries taking sub seconds to execute.
We have Oracle 9.2.0.5 Database Server and I have downloaded the ojdbc14.jar from Oracle site for the same. Tried executing the java code from windows 2000, Sun Solaris and Opteron machines and having the same problem.
Does any one know a solution to this problem? I also tried ojdbc14.jar meant for Oracle 10g, that did not help.
Please help.
Thanks
YuvaMy code is doing some thing which might be working well with classes12.zip and which does not work well with ojdbc14.jar? Any general suggestions to make the code better, especially for batch updates.
But for selecting a row from the table, I am using index columns in the where cluase. In the code using PreparedStatement, setting all the reuired fields. Here is the code. We have a huge index with 14 fields!!. All the parameters are for where clause.
if(longCallPStmt == null) {
longCallPStmt = conn.prepareStatement(longCallQuery);
log(Level.FINE, "CdrAggLoader: Loading tcdragg entry for "
+GeneralUtility.formatDate(cdrAgg.time_hour, "MM/dd/yy HH"));
longCallPStmt.clearParameters();
longCallPStmt.setInt(1, cdrAgg.iintrunkgroupid);
longCallPStmt.setInt(2, cdrAgg.iouttrunkgroupid);
longCallPStmt.setInt(3, cdrAgg.iintrunkgroupnumber);
longCallPStmt.setInt(4, cdrAgg.iouttrunkgroupnumber);
longCallPStmt.setInt(5, cdrAgg.istateregionid);
longCallPStmt.setTimestamp(6, cdrAgg.time_hour);
longCallPStmt.setInt(7, cdrAgg.icalltreatmentcode);
longCallPStmt.setInt(8, cdrAgg.icompletioncode);
longCallPStmt.setInt(9, cdrAgg.bcallcompleted);
longCallPStmt.setInt(10, cdrAgg.itodid);
longCallPStmt.setInt(11, cdrAgg.iasktodid);
longCallPStmt.setInt(12, cdrAgg.ibidtodid);
longCallPStmt.setInt(13, cdrAgg.iaskzoneid);
longCallPStmt.setInt(14, cdrAgg.ibidzoneid);
rs = longCallPStmt.executeQuery();
if(rs.next()) {
cdr_agg = new CdrAgg(
rs.getInt(1),
rs.getInt(2),
rs.getInt(3),
rs.getInt(4),
rs.getInt(5),
rs.getTimestamp(6),
rs.getInt(7),
rs.getInt(8),
rs.getInt(9),
rs.getInt(10),
rs.getInt(11),
rs.getInt(12),
rs.getInt(13),
rs.getInt(14),
rs.getInt(15),
rs.getInt(16)
}//if
end_time = System.currentTimeMillis();
log(Level.INFO, "CdrAggLoader: Loaded "+((cdr_agg==null)?0:1) + " "
+ GeneralUtility.formatDate(cdrAgg.time_hour, "MM/dd/yy HH")
+" tcdragg entry in "+(end_time - start_time)+" msecs");
} finally {
GeneralUtility.closeResultSet(rs);
GeneralUtility.closeStatement(pstmt);
Why that code works well for classes12.zip (comes back in around 10 msec) and not for ojdbc14.jar (comes back in 6-7 minutes)?
Please advise. -
Performance problem with recordset object
Hi,
I have a performance problem with record set object. Is it true using RecordSet object as argument to the method will cause any perfomance degradation?
here is my code.
finStmtList = selectFinancialStatements(rs, shortFormat, latestOnly, true);
I changed the code by populating the recordset in the method that called the above statement. previously the population of valueobject is within the select FinancialStatements.
Now the method looks like
finStmtList = selectFinancialStatements(ValueObject, shortFormat, latestOnly, true);
Is this fix will result in any performance gain?Can any one suggest me that the above RecordSet Object contains large number of records that counts up to 1000 rows and having 30 columns? I tested the application. But the performance varies from time to time.
Is there any other way to fine tune it? -
Performance problem with table COSS...
Hi
Anyone encountered performance problem with these table : COSS, COSB, COEP
Best Regards>
gsana sana wrote:
> Hi Guru's
>
> this is the select Query which is taking much time in Production. so please help me to improve the preformance with BSEG.
>
> this is my select query:
>
> select bukrs
> belnr
> gjahr
> bschl
> koart
> umskz
> shkzg
> dmbtr
> ktosl
> zuonr
> sgtxt
> kunnr
> from bseg
> into table gt_bseg1
> for all entries in gt_bkpf
> where bukrs eq p_bukrs
> and belnr eq gt_bkpf-belnr
> and gjahr eq p_gjahr
> and buzei in gr_buzei
> and bschl eq '40'
> and ktosl ne 'BSP'.
>
> UR's
> GSANA
Hi,
This is what I know and please if any expert think its incorrect, please do correct me.
BSEG is a cluster table with BUKRS, BELNR, GJAHR and BUZEI as the key whereas other key will be stored in database as raw data thus SAP apps will need to convert that raw data first if we are using other keys in where condition. Hence, I suggest to use up to buzei in the where condition and filter other condition in internal table level like using Delete statement. Hope its help.
Regards,
Abraham -
Performance problem with Oracle
We are currently getting a system developed in Unix/Weblogic/Tomcat/Oracle environment. We have developed a screen that contains 5 or 6 different parameters to select from. We could select multiple parameters in each of these selections. The idea behind the subsequent screens is to attach information to already existing data/ possible future data that matches the selection criteria.
Based on these selections, existing data located within the system in a table is searched and those that match are selected. Also new rows are created in the table against combinations that do not currently have a match. Frequently multiple parameters are selected, and 2000 different combinations need to be searched in the table. Of these selections, only about 100 or 200 combinations will be available in existing data. So the system is having to insert 1800 rows. The user meanwhile waits for the system to come up with data based on their selections. The user is not willing to wait more than 30 seconds to get to the next screen. In the above mentioned scenario, the system takes more than an hour to insert the new records and bring the information up. We need suggestions to see if the performance can be improved this drastically. If not what are the alternatives? ThanksThe #1 cause for performance problems with Oracle is not using it correctly.
I find it hard to believe that with the small data volumes mentioned, that you can have perfornance problems.
You need to perform a sanity check. Are you using Oracle correctly? Do you know what bind variables are? Are you using indexes correctly? Are you using PL/SQL correctly? Is the instance setup correctly? What about storage, are you using SAME (RAID10) or something else? Etc.
Facts. Oracle peforms exceptionally well. Oracle exceptionally well.
Simple example from a benchmark I did on this exact same subject. App-tier developers not understanding and not using Oracle correctly. Incorrect usage of Oracle doing a 100,000 SQL statements. 24+ minutes elapsed time. Doing those exact same 100,000 SQL statement correctly (using bind variables) - 8 seconds elapsed time. (benchmark using Oracle 10.1.0.3 on a Sunfire V20z server)
But then you need to use Oracle correctly. Are you familiar with the Oracle Concepts Guide? Have you read the Oracle Application Developer Fundamentals Guide? -
Performance problem with CR SDK
Hi,
I'am currently on a customer site and I have the following problem :
The client have a performance problem with a J2EE application wich call a Crystal report with th CR SDK. To reproduce the problem on the local machine (the CR server), I have developped a little jsp page wich used the Crystal SDK to open a Crystal report on the server (this report is based on a XML data source), setting the new data source (with a new xml data flow) and refresh the report in PDF format.
The problem is that the 2 first sequences take about 5 seconde each (5 sec for the opening report and 5 seconds for the setting data source). Then the total process take about 15 seconds to open and refresh the document that is very long for a little document.
The document is a 600Ko file, the xml source is a 80Ko file.
My jsp page is directly deployed on the tomcat of the Crystal Report Server (CRXIR2 without Service Pack).
The Filestore and the MySQL database are on the CR server.
The server is a 4 quadripro (16 proc) with 16Go of RAM and is totally dedicated to Crystal Report. For the moment, there is no activity on the server (it is also used for the test).
The mains jsp orders are the followings :
IEnterpriseSession es = CrystalEnterprise.getSessionMgr().logon("administrator", "", "EDITBI:6400", "secEnterprise");
IInfoStore infoStore = (IInfoStore) es.getService("", "InfoStore");
IInfoObjects infoObjects = infoStore.query("SELECT * FROM CI_INFOOBJECTS WHERE SI_NAME='CPA_EV' AND SI_INSTANCE=0 ");
IInfoObject report = (IInfoObject) infoObjects.get(0);
IReportAppFactory reportAppFactory = (IReportAppFactory)es.getService("RASReportFactory");
ReportClientDocument reportClientDoc = reportAppFactory.openDocument(report.getID(), 0, null);
IXMLDataSet xmlDataSet = new XMLDataSet();
xmlDataSet.setXMLData(new ByteArray(ligne_data_xml));
xmlDataSet.setXMLSchema(new ByteArray(ligne_schema_xml));
DatabaseController db = reportClientDoc.getDatabaseController();
db.setDataSource(xmlDataSet, "", "");
ByteArrayInputStream bt = (ByteArrayInputStream)reportClientDoc.getPrintOutputController().export(ReportExportFormat.PDF);
My question is : does this method is the good one to do this ?
Thank's in advance for your help
Best regards
EmmanuelHi,
My problem is not resolved and I have'nt news from the support.
If you have any idea/info, don't forget me
Thank's in advance
Emmanuel -
Performance problem with query on bkpf table
hi good morning all ,
i ahave a performance problem with a below query on bkpf table .
SELECT bukrs
belnr
gjahr
FROM bkpf
INTO TABLE ist_bkpf_temp
WHERE budat IN s_budat.
is ther any possibility to improve the performanece by using index .
plz help me ,
thanks in advance ,
regards ,
srinivashi,
if u can add bukrs as input field or if u have bukrs as part of any other internal table to filter out the data u can use:
for ex:
SELECT bukrs
belnr
gjahr
FROM bkpf
INTO TABLE ist_bkpf_temp
WHERE budat IN s_budat
and bukrs in s_bukrs.
or
SELECT bukrs
belnr
gjahr
FROM bkpf
INTO TABLE ist_bkpf_temp
for all entries in itab
WHERE budat IN s_budat
and bukrs = itab-bukrs.
Just see , if it is possible to do any one of the above?? It has to be verified with ur requirement. -
CONNECT BY, Performance problems with hierarchical SQL
Hello,
I have a performance problem with the following SQL:
table name: testtable
columns: colA, colB, colC, colD, colE, colF
Following hierarchical SQL:
SELECT colA||colB||colC AS A1, colD||colE||colF AS B1, colA, colB, colC, level
FROM testable
CONNECT BY PRIOR A1 = B1
START WITH A1 = 'aaa||bbbb||cccc'
With big tables the performance of this construct is very bad. I can't use functional based indexes to create an Index on "colA||colB||colC" and "colD||colE||colF"
Has anyone an idea how I can get a real better performance for this hierarchical construct, if I have to combine multiple colums? Or is there any better way (with an PL/SQL or view trigger) solve something like this ??
Thanks in advance for your investigation :)
CarmenWhy not
CONNECT BY PRIOR colA = colD
and PRIOR colB = colE
and ...
? It is not the same thing, but I suspect my version is correct:-) -
Performance problems with jdk 1.5 on Linux plattform
Performance problems with jdk 1.5 on Linux plattform
(not tested on Windows, might be the same)
After refactoring using the new features from java 1.5 I lost
performance significantly:
public Vector<unit> units;
The new code:
for (unit u: units) u.accumulate();
runs more than 30% slower than the old code:
for (int i = 0; i < units.size(); i++) units.elementAt(i).accumulate();
I expected the opposite.
Is there any information available that helps?Here's the complete benchmark code I used:package test;
import java.text.NumberFormat;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.LinkedList;
import java.util.Vector;
public class IterationPerformanceTest {
private int m_size;
public IterationPerformanceTest(int size) {
m_size = size;
public long getArrayForLoopDuration() {
Integer[] testArray = new Integer[m_size];
for (int item = 0; item < m_size; item++) {
testArray[item] = new Integer(item);
StringBuilder builder = new StringBuilder();
long start = System.nanoTime();
for (int index = 0; index < m_size; index++) {
builder.append(testArray[index]);
long end = System.nanoTime();
System.out.println(builder.length());
return end - start;
public long getArrayForEachDuration() {
Integer[] testArray = new Integer[m_size];
for (int item = 0; item < m_size; item++) {
testArray[item] = new Integer(item);
StringBuilder builder = new StringBuilder();
long start = System.nanoTime();
for (Integer item : testArray) {
builder.append(item);
long end = System.nanoTime();
System.out.println(builder.length());
return end - start;
public long getArrayListForLoopDuration() {
ArrayList<Integer> testList = new ArrayList<Integer>();
for (int item = 0; item < m_size; item++) {
testList.add(item);
StringBuilder builder = new StringBuilder();
long start = System.nanoTime();
for (int index = 0; index < m_size; index++) {
builder.append(testList.get(index));
long end = System.nanoTime();
System.out.println(builder.length());
return end - start;
public long getArrayListForEachDuration() {
ArrayList<Integer> testList = new ArrayList<Integer>();
for (int item = 0; item < m_size; item++) {
testList.add(item);
StringBuilder builder = new StringBuilder();
long start = System.nanoTime();
for (Integer item : testList) {
builder.append(item);
long end = System.nanoTime();
System.out.println(builder.length());
return end - start;
public long getArrayListIteratorDuration() {
ArrayList<Integer> testList = new ArrayList<Integer>();
for (int item = 0; item < m_size; item++) {
testList.add(item);
StringBuilder builder = new StringBuilder();
long start = System.nanoTime();
Iterator<Integer> iterator = testList.iterator();
while(iterator.hasNext()) {
builder.append(iterator.next());
long end = System.nanoTime();
System.out.println(builder.length());
return end - start;
public long getLinkedListForLoopDuration() {
LinkedList<Integer> testList = new LinkedList<Integer>();
for (int item = 0; item < m_size; item++) {
testList.add(item);
StringBuilder builder = new StringBuilder();
long start = System.nanoTime();
for (int index = 0; index < m_size; index++) {
builder.append(testList.get(index));
long end = System.nanoTime();
System.out.println(builder.length());
return end - start;
public long getLinkedListForEachDuration() {
LinkedList<Integer> testList = new LinkedList<Integer>();
for (int item = 0; item < m_size; item++) {
testList.add(item);
StringBuilder builder = new StringBuilder();
long start = System.nanoTime();
for (Integer item : testList) {
builder.append(item);
long end = System.nanoTime();
System.out.println(builder.length());
return end - start;
public long getLinkedListIteratorDuration() {
LinkedList<Integer> testList = new LinkedList<Integer>();
for (int item = 0; item < m_size; item++) {
testList.add(item);
StringBuilder builder = new StringBuilder();
long start = System.nanoTime();
Iterator<Integer> iterator = testList.iterator();
while(iterator.hasNext()) {
builder.append(iterator.next());
long end = System.nanoTime();
System.out.println(builder.length());
return end - start;
public long getVectorForLoopDuration() {
Vector<Integer> testVector = new Vector<Integer>();
for (int item = 0; item < m_size; item++) {
testVector.add(item);
StringBuilder builder = new StringBuilder();
long start = System.nanoTime();
for (int index = 0; index < m_size; index++) {
builder.append(testVector.get(index));
long end = System.nanoTime();
System.out.println(builder.length());
return end - start;
public long getVectorForEachDuration() {
Vector<Integer> testVector = new Vector<Integer>();
for (int item = 0; item < m_size; item++) {
testVector.add(item);
StringBuilder builder = new StringBuilder();
long start = System.nanoTime();
for (Integer item : testVector) {
builder.append(item);
long end = System.nanoTime();
System.out.println(builder.length());
return end - start;
public long getVectorIteratorDuration() {
Vector<Integer> testVector = new Vector<Integer>();
for (int item = 0; item < m_size; item++) {
testVector.add(item);
StringBuilder builder = new StringBuilder();
long start = System.nanoTime();
Iterator<Integer> iterator = testVector.iterator();
while(iterator.hasNext()) {
builder.append(iterator.next());
long end = System.nanoTime();
System.out.println(builder.length());
return end - start;
* @param args
public static void main(String[] args) {
IterationPerformanceTest test = new IterationPerformanceTest(1000000);
System.out.println("\n\nRESULTS:");
long arrayForLoop = test.getArrayForLoopDuration();
long arrayForEach = test.getArrayForEachDuration();
long arrayListForLoop = test.getArrayListForLoopDuration();
long arrayListForEach = test.getArrayListForEachDuration();
long arrayListIterator = test.getArrayListIteratorDuration();
// long linkedListForLoop = test.getLinkedListForLoopDuration();
long linkedListForEach = test.getLinkedListForEachDuration();
long linkedListIterator = test.getLinkedListIteratorDuration();
long vectorForLoop = test.getVectorForLoopDuration();
long vectorForEach = test.getVectorForEachDuration();
long vectorIterator = test.getVectorIteratorDuration();
System.out.println("Array for-loop: " + getPercentage(arrayForLoop, arrayForLoop) + "% ("+getDuration(arrayForLoop)+" sec)");
System.out.println("Array for-each: " + getPercentage(arrayForLoop, arrayForEach) + "% ("+getDuration(arrayForEach)+" sec)");
System.out.println("ArrayList for-loop: " + getPercentage(arrayForLoop, arrayListForLoop) + "% ("+getDuration(arrayListForLoop)+" sec)");
System.out.println("ArrayList for-each: " + getPercentage(arrayForLoop, arrayListForEach) + "% ("+getDuration(arrayListForEach)+" sec)");
System.out.println("ArrayList iterator: " + getPercentage(arrayForLoop, arrayListIterator) + "% ("+getDuration(arrayListIterator)+" sec)");
// System.out.println("LinkedList for-loop: " + getPercentage(arrayForLoop, linkedListForLoop) + "% ("+getDuration(linkedListForLoop)+" sec)");
System.out.println("LinkedList for-each: " + getPercentage(arrayForLoop, linkedListForEach) + "% ("+getDuration(linkedListForEach)+" sec)");
System.out.println("LinkedList iterator: " + getPercentage(arrayForLoop, linkedListIterator) + "% ("+getDuration(linkedListIterator)+" sec)");
System.out.println("Vector for-loop: " + getPercentage(arrayForLoop, vectorForLoop) + "% ("+getDuration(vectorForLoop)+" sec)");
System.out.println("Vector for-each: " + getPercentage(arrayForLoop, vectorForEach) + "% ("+getDuration(vectorForEach)+" sec)");
System.out.println("Vector iterator: " + getPercentage(arrayForLoop, vectorIterator) + "% ("+getDuration(vectorIterator)+" sec)");
private static NumberFormat percentageFormat = NumberFormat.getInstance();
static {
percentageFormat.setMinimumIntegerDigits(3);
percentageFormat.setMaximumIntegerDigits(3);
percentageFormat.setMinimumFractionDigits(2);
percentageFormat.setMaximumFractionDigits(2);
private static String getPercentage(long base, long value) {
double result = (double) value / (double) base;
return percentageFormat.format(result * 100.0);
private static NumberFormat durationFormat = NumberFormat.getInstance();
static {
durationFormat.setMinimumIntegerDigits(1);
durationFormat.setMaximumIntegerDigits(1);
durationFormat.setMinimumFractionDigits(4);
durationFormat.setMaximumFractionDigits(4);
private static String getDuration(long nanos) {
double result = (double)nanos / (double)1000000000;
return durationFormat.format(result);
} -
Performance problems with new Java Tiger style recommendations
Performance problems with jdk 1.5 on Linux plattform
(not tested on Windows, might be the same)
using the new style recommendations.
I need fast Vector loops for high speed mathematical calculations, some
hints about the fastest way to program that loop would be also great!
After refactoring using the new features from java 1.5 (as recommended from
SUN) I lost performance significantly:
using a vector:
public Vector<unit> units;
The new code (recommended from SUN for Java Tiger for redesign):
for (unit u: units) u.accumulate();
runs more than 30% slower than the old code:
for (int i = 0; i < units.size(); i++) units.elementAt(i).accumulate();
I expected the opposite.
Is there any information available that helps?
The following additional information I got from Mr. Shankar Unni:
I got some fairly anomalous results comparing ArrayList and Vector: for the
1.5-style loops, ArrayList was faster then Vector, but for a loop with get()
calls, Vector was faster. Vector was even faster than that using
elementAt(), which was a surprise:
For a million summing iterations over a 100-element array:
vector elementAt loop took 3446 ms.
vector get loop took 3796 ms.
vector iterator loop took 5469 ms.
arraylist get loop took 4136 ms.
arraylist iterator loop took 4668 ms.If your topic doesn't change, please stay in your original post.
-
Performance problems with SAP GUI 7.10 and BEx 3.5 Patch 400?
Hi everybody,
we installed SAP GUI 7.10 and BEx 3.5 Patch 400 and detected hugh performance problems with this version in comparison to the SAP GUI 6.40 and BEx 3.5 or BEx 7.0 Patch 800.
Does anybody detect the same problems?
Best regards,
UlliMost important question when you are talking about performance-issues:
which OC are you working on and which excel version?
ciao
Joke -
Performance problems with EP 6 and MS IE
Hi everybody,
since a couple of days, we are facing a sever performance problem with our SAP EP 6.0. When I access the system with MS Internet Explorer 6.0, it takes 5-10 minutes after the Login. With Firefox Browser, the performance is ok. Therefore I assume that it must be a problem with the IE settings. Does anybody know a solution?
Best regards,
MichaelThere are a few things that this could be. I've seen the setting "Empty Temporary Internet Files folder when browser is closed" cause a lot of performance problems (This is in the advanced settings in your IE).
This will cause your cache to be cleared out each time the browser is closed and cause a lot more data to be downloaded each time you login to the system.
For more analysis I'd recommend putting a tool like HTTPWatch into your IE browser and seeing which requests are using the most time.
Maybe you are looking for
-
IPhone 4S (iOS 6) not syncing with iTunes (10.7) asking to restore
I have an iPhone 4S and a MBP running on 10.6.8 with iTunes 10.7. My iPhone will no longer sync, making it impossible to manage my music. If it weren't for my music, I wouldn't really care to sync it aside from just backing up my contacts etc. The me
-
Disk Utility to Airport USB disk?
It looks like the answer is no, but I'm mildly surprised that Apple didn't make this more Apple-like Just checking to see if one can do any "Disk Utility" type of access (Erase, repair, etc) to a USB HD off the AEBS (I have the gigabit version), or i
-
Source of xslt mapping and XSD/ XMT target structures for standard Idocs
Hi, I am working on R/3 - XI - ICH scenario. I need xslt mapping and XSD/ XML target structures for standard IDoc like PROACT01,DELFOR01, DELVRY03. I tried to search it on marketplace but couldn't find it there. As per configuration document, these t
-
How do I 'save as' on imovie 10 projects?
Hi I've created a movie in imovie but need to modify content and save as - how do I do this? Why has the file functionality been taken off - very frustrating! Cheers
-
Alternative to ipad for recording music?
Hello! Is there anything that I can buy at the apple store that allows me to record music and download to my desktop mac? I don't want an iPad, but would love something similar and less expensive. Any ideas?