query optimization
Hello guys,.
I made a request, but the execution time is too long, could you help me optimize it please?
Kind regards
Try to change your return type of the object root for virtual machines, VMWVirtualMachine.
and the path to the reference of the root to VMWModel, virtualCenters, virtualMachineCollection, virtualMachines
A property on or below the return object would then be your path to the where clause.
There is no end to subject to return anything below VMWVirtualMachine, unless you create 1 line per object in a relationship 1 - several with the object root, such as processors or logical disks.
In this case, the path in which the comparison of the clause is triggering additional works useless back up the tree view of the object of return, which can work, but not very efficiently in large environments.
Note that aggregations will cause some performance issues with large sets of data, and how they are created can alter performance. Always test the performance first without filter or aggregation, then add filters, then add aggregations.
Aggregations are generally limited in capabilities in queries, in any case. In general, I remove the aggregation, make the filter here, then the output power to a WCF service to the aggregation (s) the need.
Tags: Dell Tech
Similar Questions
-
Setting the query: optimizer does not use the index function
Hello
I have a request written by a developer that I can't change.
It is here that the condition:
OÙ ( UPPER(TRIM (CODFSC)) = UPPER (TRIM ( '01923980500'))
OR UPPER(TRIM (CODUIC)) = UPPER (TRIM ( '01923980500')))
There is an index on CODFSC and on CODUIC1.
the plan is:
Plan
INSTRUCTION SELECT ALL_ROWS cost: 9 194 bytes: 3 206 502 cardinality: 15 054
ACCESS FULL ANAGRAFICA cost TABLE TABLE 1: 9 194 bytes: 3 206 502 cardinality: 15 054
So I created two new index on SUPERIOR (TRIM ()CODFSC)) and SUPERIOR (TRIM ()CODUIC)) but the plan
complete analysis of STIL.
Modifing where condition in:
OÙ ( CODFSC = UPPER (TRIM ( '01923980500'))
OR CODUIC = UPPER (TRIM ( '01923980500')))
the plan is:
SELECT STATEMENT ALL_ROWSCost: 157 bytes: 426 cardinality: 2
CONCATENATION OF 5
TABLE ACCESS BY INDEX ROWID ANAGRAFICA cost TABLE 2: cardinality of 5 bytes: 213: 1
1 INDEX RANGE SCAN INDEX ANAGRAFICA_IDX01 cost: cardinality 3: 1
TABLE ACCESS BY INDEX ROWID ANAGRAFICA cost TABLE 4: cardinality 152 bytes: 213: 1
3 INDEX SKIP SCAN INDEX ANAGRAFICA_IDX02 cost: cardinality 1: 151
Why optimizer not use my funct index?
Thank you.
Franck,
I always forget that the default value for the GOLD expansion depends on a path indexed for each branch.
2 in your use of or_predicates (2) depends on the position of complex predicate which must be expanded. If you change the order of predicate 'State = 0' to display AFTER the complex predicate, you must change the indicator of "or_predicates (1).
Outside of the current state of undocumented indicator, it also introduces the disturbing thought that, for a more complex query, a change in the transformation may result in another set of query blocks generated with a different ranking of the predicates. Yet another case to ensure that if you suggest anything suggest you (or create a SQL database).
Concerning
Jonathan Lewis
-
HelloI'm on 11.1.2.1.0.
In SQl, we use / * + FIRST_ROWS (10) * /.
one)
For use in VO we can go to
VO.xml-> general-> Tuning
Query FIRST_ROWS optimizer indicator (10)
Access to the scroll mode
Size of the beach 1
or
(b)
VO.xml-> general-> Tuning
Query FIRST_ROWS optimizer indicator
Access to the scroll mode
Set size 10
(Should I use option a) or B)?
Thank you
Kiran
(b) it is not sensible to try to get the first 10 lines as quickly as possible and then use 10 back and forth to get the data.
Timo
-
Need help on query optimization
Hi experts,
I have the following query that lasts more than 30 minutes to retrieve data. We use Oracle 11 g.
If I run the inline queries (subqueries) A and B separately, it comes in a few seconds, but when I try to join the two should we close at 1: 00 sometimes. In my case query A specific, 52 returns records and query B return 120 files only.SELECT B.serv_item_id, B.document_number, DECODE(B.activity_cd,'I','C',B.activity_cd) activity_cd, DECODE(B.activity_cd, 'N', 'New', 'I', 'Change', 'C', 'Change', 'D', 'Disconnect', B.activity_cd ) order_activity, b.due_date, A.order_due_date , A.activity_cd order_activty_cd FROM (SELECT SRSI2.serv_item_id , NVL(to_date(TO_CHAR(asap.PKG_GMT.sf_gmt_as_local(TASK2.revised_completion_date),'J'),'J'), SR2.desired_due_date) order_due_date , 'D' activity_cd FROM asap.serv_req_si SRSI2, asap.serv_req SR2, asap.task TASK2 WHERE SRSI2.document_number = 10685440 AND SRSI2.document_number = SR2.document_number AND SRSI2.document_number = TASK2.document_number (+) AND SRSI2.activity_cd = 'D' AND TASK2.task_type (+) = 'DD' ) A , (SELECT SRSI1.serv_item_id, SR1.document_number, SRSI1.activity_cd, NVL(to_date(TO_CHAR(asap.PKG_GMT.sf_gmt_as_local(TASK1.revised_completion_date),'J'),'J'), SR1.desired_due_date) due_date FROM asap.serv_req_si SRSI1, asap.serv_req SR1, asap.task TASK1, asap.serv_req_si CURORD WHERE CURORD.document_number = 10685440 AND SRSI1.document_number = SR1.document_number AND SRSI1.document_number != CURORD.document_number AND SRSI1.serv_item_id = CURORD.serv_item_id AND SRSI1.document_number = TASK1.document_number (+) AND TASK1.task_type (+) = 'DD' AND SR1.type_of_sr = 'SO' AND SR1.service_request_status < 801 AND SRSI1.activity_cd IN ('I', 'C', 'N') ) B WHERE B.serv_item_id = A.serv_item_id;
For me, it looks like the failure of the optimizer to determine the amount of data, it will return for each subquery. I feel the need to fool the optimizer through workaround to get the result more quickly. But I'm not able to find a work around for this. If someone of you can give some light on it, it would be really useful.
Thank you very much
GAF
Published by: user780504 on August 7, 2012 02:16
Published by: BluShadow on August 7, 2012 10:17
addition of {noformat}{noformat} tags for readability and replace <> with != to circumvent forum issue. Please read {message:id=9360002}
Perhaps using / * + materialize * / advice? See above
Concerning
Etbin
-
Hi all
I tried to optimize the following query, what is the best method to grant the following query?
Best regards---code truncated
Val
Published by: debonair Valerie on December 27, 2011 04:02Discussion: HOW TO: post a request for tuning SQL statement - posting model
HOW to: Validate a query of SQL statement tuning - model showing -
Question about the query optimizer
For a year during my database of the Conference the following table
with approximately 1.5 million entries were given. In addition, there were the following query:CREATE TABLE TASKS ( "ID" NUMBER NOT NULL ENABLE, "START_DATE" DATE, "END_DATE" DATE, "DESCRIPTION" VARCHAR2(50 BYTE) ) ;
And the Index:SELECT START_DATE, COUNT(START_DATE) FROM TASKS GROUP BY START_DATE ORDER BY START_DATE;
The main exercise was to speed up queries with indexes. Because all the data is available the optimizer ignores index and just have a full table scan.create index blub on Tasks (start_date asc);
Here the QEP:
Then we tried to compel him to make the index with this query:---------------------------------------------------------------------------- | Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time | ---------------------------------------------------------------------------- | 0 | SELECT STATEMENT | | 9343 | 74744 | 3423 (6)| 00:00:42 | | 1 | SORT GROUP BY | | 9343 | 74744 | 3423 (6)| 00:00:42 | | 2 | TABLE ACCESS FULL| TASKS | 1981K| 15M| 3276 (2)| 00:00:40 | ----------------------------------------------------------------------------
but again he ignored the index. The optimizer guide makes clear, that whenever you will use all the data in a table, it must do a full scan.ALTER SESSION SET OPTIMIZER_MODE = FIRST_ROWS_1; SELECT /* + INDEX (TASKS BLUB) */ START_DATE, COUNT(START_DATE) FROM TASKS GROUP BY START_DATE ORDER BY START_DATE;
So we fooled him doing a scan limited quick index with this query:
now, we got the following QEP:create or replace function bla return date deterministic is ret date; begin select MIN(start_date) into ret from Tasks; return ret; end bla; ALTER SESSION SET OPTIMIZER_MODE = FIRST_ROWS_1; SELECT /* + INDEX (TASKS BLUB) */ START_DATE, COUNT(START_DATE) FROM TASKS where start_date >= bla GROUP BY START_DATE ORDER BY START_DATE;
So he use the index.----------------------------------------------------------------------------- | Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time | ----------------------------------------------------------------------------- | 0 | SELECT STATEMENT | | 1 | 8 | 3 (0)| 00:00:01 | | 1 | SORT GROUP BY NOSORT| | 1 | 8 | 3 (0)| 00:00:01 | |* 2 | INDEX RANGE SCAN | BLUB | 1 | 8 | 3 (0)| 00:00:01 | -----------------------------------------------------------------------------
Now to my two questions:
1. why should always do a full scan (because the response of optimizer documentation is a bit unsatisfactory)?
2. After looking at the difference between the costs (FS: 3276 IR: 3) and the time, the system needs (FS: 9.6 s IR: 4.45) why the optimizer refused the plan clearly better?
Thanks in advance,
Kai Gödde
Published by: Kai Gödde on May 30, 2011 18:54
Published by: Kai Gödde on May 30, 2011 18:56The reason for which Oracle is full of sweeping the table corresponding to your request:
SELECT START_DATE, COUNT(START_DATE) FROM TASKS GROUP BY START_DATE ORDER BY START_DATE;
and using the index for:
SELECT /* + INDEX (TASKS BLUB) */ START_DATE, COUNT(START_DATE) FROM TASKS where start_date >= bla GROUP BY START_DATE ORDER BY START_DATE;
has to do with the (possible) null values in the table. Note that the query with a predicate on start_date would have probably used the index even without suspicion.
The optimizer does not know that there is a start_date value in each row of the table and the group by expression will include NULL values, but because you count start_date (meaning count of non-null of the expression values) the count himself will be null. For example:
SQL> with t as ( 2 select trunc(sysdate) dt from dual union all 3 select trunc(sysdate) dt from dual union all 4 select trunc(sysdate-1) dt from dual union all 5 select trunc(sysdate-1) dt from dual union all 6 select to_date(null) from dual) 7 select dt, count(dt) from t 8 group by dt; DT COUNT(DT) ----------- ---------- 0 29-MAY-2011 2 30-MAY-2011 2
Because Oracle does not create an index entry for a line with all null values in the index key, the optimizer is forced full analysis of the table to make sure that it returns all rows. In the query with a predicate on start_date the optimizer knows that no matter what start_date > blah must be non-null.
To make your first query to use an index, you must declare either start_date as not null (which implies that it is a mandatory field), or if there may be values NULL, but you care not to add a like predicate:
where start_date is not null);
John
-
Just look to see if anyone has directions on how I can optimize this query... it's take a minute to view the data and even if its not terribly long, it would be even better if it was faster (I am hearing reports that try to refresh the page after 30 seconds or so Ive been trying to figure out if I can "flush" something , but I don't know if its possible to hunt during a query or same output. I rinse at the beginning and shows a message that says: "wait...". "who I'd like to get rid of after the data is ready, do not know how to do this, but, I think it would need to be a layer or something that shows and hides the layer. But without further ADO... the query.
SELECT * may be the culprit. Do you really need all the fields in the table? Is your database on the ColdFusion server? Otherwise, what is the bandwidth between the CF and the Informix Server?
-
eBooks on SQL query optimization
Hello.
can someone assign me all the technical links for ebooks on tuning SQL query to 10g or 11g.
Tuning SQL queries, it's something I want to build my expertise...
There may be many consultants as the query SQL, Access Advisor Advisor and so on... but nothing of such adjustment your queries manually for maximum optimization.
Kindly help me in this!Check Oracle docs http://download.oracle.com/docs/cd/B19306_01/server.102/b14211/toc.htm
But really, you should also check:
http://www.asktom.Oracle.com
http://tkyte.blogspot.com
AND all the other blogs he does (like Jonathan Lewis site and blog) you will find many interesting articles there, the 'real world', regarding performance and optimization.
Published by: hoek on March 24, 2009 10:40
-
Age of query optimization in the year
Hey there,
I calculate the difference of the year between two dates by doing the following thing:
Do you think I can optimized the query or you know other ways to do the same calculation?TRUNC(MONTHS_BETWEEN(RES.SAMPLE_SAMPLING_DATE,RES.PATIENT_BIRTHDATE)/12)+1
Kind regards
Jarod.Have you already searched this forum?
There are many examples... -
Performance of SQL query optimization
SELECT
BOX WHEN SACA. CTD_TYPE = 2 THEN 'JMP' WHEN SACA. CTD_TYPE = 3 THEN "PTD" WHAT SACA. CTD_TYPE = 4 THEN "QTD" WHAT SACA. CTD_TYPE = 5 THEN 'CDA' END AS NAME,
SACA. TOT_REVENUE, SACC. TOT_REVENUE AS LAST_TOT_REVENUE,
SACA. TOT_MARGIN, SACC. TOT_MARGIN AS LAST_TOT_MARGIN,
SACA. TOT_MARGIN_PCT, SACC. TOT_MARGIN_PCT AS LAST_TOT_MARGIN_PCT,
SACA. TOT_VISIT_CNT, SACC. TOT_VISIT_CNT AS LAST_TOT_VISIT_CNT,
SACA. AVG_ORDER_SIZE, SACC. AVG_ORDER_SIZE AS LAST_AVG_ORDER_SIZE,
SACA. TOT_MOVEMENT, SACC. TOT_MOVEMENT AS LAST_TOT_MOVEMENT
DE AAAAAAAAAAAA JOIN AAAAAAAAAAAA SACC WE SACA SACA. CTD_TYPE = OF THE GUIDE OF THE SACC. CTD_TYPE WHERE SACA. SUMMARY_CTD_ID = (SELECT SUMMARY_CTD_ID FROM SALES_AGGR_DAILY WHERE LOCATION_LEVEL_ID = 5 AND location_id = 5656 AND PRODUCT_LEVEL_ID is NULL AND PRODUCT_ID IS NULL AND CALENDAR_ID = (SELECT LAST_AGGR_CALENDARID FROM SALES_AGGR_WEEKLY WHERE LOCATION_LEVEL_ID = 5 AND location_id = 5656 AND CALENDAR_ID = 365 AND PRODUCT_LEVEL_ID is NULL AND PRODUCT_ID IS NULL)) AND of the Guide of the SACC. SUMMARY_CTD_ID = (SELECT SUMMARY_CTD_ID FROM SALES_AGGR_DAILY WHERE LOCATION_LEVEL_ID = 5 AND location_id = 5656 AND PRODUCT_LEVEL_ID is NULL AND PRODUCT_ID IS NULL AND CALENDAR_ID = (SELECT LAST_AGGR_CALENDARID FROM SALES_AGGR_WEEKLY WHERE LOCATION_LEVEL_ID = 5 AND location_id = 5656 AND CALENDAR_ID = 365 AND PRODUCT_LEVEL_ID is NULL AND PRODUCT_ID IS NULL))
Normally this query run 15-17 seconds my bike to reduce below 6 seconds... Can someone help me with this?
Edited by: 927853 18 April 2012 10:59/* Formatted on 2012/04/17 14:42 (Formatter Plus v4.8.8) */ SELECT CASE WHEN saca.ctd_type = 2 THEN 'WTD' WHEN saca.ctd_type = 3 THEN 'PTD' WHEN saca.ctd_type = 4 THEN 'QTD' WHEN saca.ctd_type = 5 THEN 'YTD' END AS NAME, saca.tot_revenue, sacc.tot_revenue AS last_tot_revenue, saca.tot_margin, sacc.tot_margin AS last_tot_margin, saca.tot_margin_pct, sacc.tot_margin_pct AS last_tot_margin_pct, saca.tot_visit_cnt, sacc.tot_visit_cnt AS last_tot_visit_cnt, saca.avg_order_size, sacc.avg_order_size AS last_avg_order_size, saca.tot_movement, sacc.tot_movement AS last_tot_movement FROM sales_aggr_ctd saca JOIN sales_aggr_ctd sacc ON saca.ctd_type = sacc.ctd_type WHERE EXISTS ( SELECT 1 FROM sales_aggr_daily oops WHERE oops.summary_ctd_id = saca.summary_ctd_id AND oops.location_level_id = 5 AND oops.location_id = 5656 AND oops.product_level_id IS NULL AND oops.product_id IS NULL AND EXISTS ( SELECT 1 FROM sales_aggr_weekly xxx WHERE oops.calendar_id = xxx.last_aggr_calendarid AND xxx.location_level_id = 5 AND xxx.location_id = 5656 AND xxx.calendar_id = 365 AND xxx.product_level_id IS NULL AND xxx.product_id IS NULL)) AND EXISTS ( SELECT 1 FROM sales_aggr_daily zzz WHERE sacc.summary_ctd_id = zzz.summary_ctd_id AND zzz.location_level_id = 5 AND zzz.location_id = 5656 AND zzz.product_level_id IS NULL AND zzz.product_id IS NULL AND EXISTS ( SELECT 1 FROM sales_aggr_weekly mmm WHERE zzz.calendar_id = mmm.last_aggr_calendarid AND mmm.location_level_id = 5 AND mmm.location_id = 5656 AND mmm.calendar_id = 365 AND mmm.product_level_id IS NULL AND mmm.product_id IS NULL))
-
Hi all
I have a CST_ITEM_COSTS table that has columns MATERIAL_COST, MATERIAL_OVERHEAD_COST, RESOURCE_COST, OUTSIDE_PROCESSING_COST, OVERHEAD_COST, INVENTORY_ITEM_ID,
ORGANIZATION_ID, LAST_UPDATE_DATE and COST_TYPE_ID. I want to take the data in this table and fill out the table, items_d, that has the columns of data COST AND COST_ELEMENT, LAST_UPDATE_DATE, INVENTORY_ITEM_ID, COST_TYPE_ID, ORGANIZATION_ID., which would be stored as 1 row cst_item_costs should be divided into 5 rows which each will have inventory_ITEM_ID,
ORGANIZATION_ID, LAST_UPDATE_DATE and COST_TYPE_ID.cost for 1 row will be the value of cost of materials and cost element is harcoded at HARDWARE, 2nd row will cost as element of value and the MATERIAL_OVERHEAD_COST cost will be harcoded as overhead, sick 3 ranks have cost resource cost value and cost elemnt resourece... same shall We will have data of 4th and 5th line. Here's the code: is it possible to optimize this code, to reduce the length or improve its performance.
SELECT
"PIVOT." "INVENTORY_ITEM_ID$ 1""INVENTORY_ITEM_ID",
"PIVOT." "ORGANIZATION_ID_1$ 1""ORGANIZATION_ID",
"PIVOT." "COST_TYPE_ID_1$ 1""COST_TYPE_ID_1",
"PIVOT." "LAST_UPDATE_DATE_1$ 1""LAST_UPDATE_DATE",
"PIVOT." "$ 1 '' COST' COST,
"PIVOT." "COST_ELEMENT$ 1""COST_ELEMENT"
Of
(SELECT
CASE WHEN 'PIVOT_ROW_GENERATOR '. "" ID "= 0 THEN 'PIVOT_SOURCE '. "' INVENTORY_ITEM_ID ' WHEN 'PIVOT_ROW_GENERATOR '. ' ' ID ' = 1 THEN 'PIVOT_SOURCE '. "' INVENTORY_ITEM_ID ' WHEN 'PIVOT_ROW_GENERATOR '. ' ' ID ' = 2 THEN 'PIVOT_SOURCE '. "' INVENTORY_ITEM_ID ' WHEN 'PIVOT_ROW_GENERATOR '. "" ID "= 3 THEN 'PIVOT_SOURCE '. "' INVENTORY_ITEM_ID ' WHEN 'PIVOT_ROW_GENERATOR '. "" ID "= 4 THEN"PIVOT_SOURCE ". "" INVENTORY_ITEM_ID END "" INVENTORY_ITEM_ID$ 1 ",".
CASE WHEN 'PIVOT_ROW_GENERATOR '. "" ID "= 0 THEN 'PIVOT_SOURCE '. "' ORGANIZATION_ID ' WHEN 'PIVOT_ROW_GENERATOR '. ' ' ID ' = 1 THEN 'PIVOT_SOURCE '. "' ORGANIZATION_ID ' WHEN 'PIVOT_ROW_GENERATOR '. ' ' ID ' = 2 THEN 'PIVOT_SOURCE '. "' ORGANIZATION_ID ' WHEN 'PIVOT_ROW_GENERATOR '. "" ID "= 3 THEN 'PIVOT_SOURCE '. "' ORGANIZATION_ID ' WHEN 'PIVOT_ROW_GENERATOR '. "" ID "= 4 THEN"PIVOT_SOURCE ". "" ORGANIZATION_ID END "" ORGANIZATION_ID_1$ 1 ",".
CASE WHEN 'PIVOT_ROW_GENERATOR '. "" ID "= 0 THEN 'PIVOT_SOURCE '. "' COST_TYPE_ID ' WHEN 'PIVOT_ROW_GENERATOR '. ' ' ID ' = 1 THEN 'PIVOT_SOURCE '. "' COST_TYPE_ID ' WHEN 'PIVOT_ROW_GENERATOR '. ' ' ID ' = 2 THEN 'PIVOT_SOURCE '. "' COST_TYPE_ID ' WHEN 'PIVOT_ROW_GENERATOR '. "" ID "= 3 THEN 'PIVOT_SOURCE '. "' COST_TYPE_ID ' WHEN 'PIVOT_ROW_GENERATOR '. "" ID "= 4 THEN"PIVOT_SOURCE ". "" COST_TYPE_ID END "" COST_TYPE_ID_1$ 1 ",".
CASE WHEN 'PIVOT_ROW_GENERATOR '. "" ID "= 0 THEN 'PIVOT_SOURCE '. "' LAST_UPDATE_DATE ' WHEN 'PIVOT_ROW_GENERATOR '. ' ' ID ' = 1 THEN 'PIVOT_SOURCE '. "' LAST_UPDATE_DATE ' WHEN 'PIVOT_ROW_GENERATOR '. ' ' ID ' = 2 THEN 'PIVOT_SOURCE '. "' LAST_UPDATE_DATE ' WHEN 'PIVOT_ROW_GENERATOR '. "" ID "= 3 THEN 'PIVOT_SOURCE '. "' LAST_UPDATE_DATE ' WHEN 'PIVOT_ROW_GENERATOR '. "" ID "= 4 THEN"PIVOT_SOURCE ". "" LAST_UPDATE_DATE END "" LAST_UPDATE_DATE_1$ 1 ",".
CASE WHEN 'PIVOT_ROW_GENERATOR '. "" ID "= 0 THEN 'PIVOT_SOURCE '. "' MATERIAL_COST ' WHEN 'PIVOT_ROW_GENERATOR '. ' ' ID ' = 1 THEN 'PIVOT_SOURCE '. "' MATERIAL_OVERHEAD_COST ' WHEN 'PIVOT_ROW_GENERATOR '. ' ' ID ' = 2 THEN 'PIVOT_SOURCE '. "' RESOURCE_COST ' WHEN 'PIVOT_ROW_GENERATOR '. "" ID "= 3 THEN 'PIVOT_SOURCE '. "' OUTSIDE_PROCESSING_COST ' WHEN 'PIVOT_ROW_GENERATOR '. "" ID "= 4 THEN"PIVOT_SOURCE ". "" OVERHEAD_COST "END" COST$ 1 ",".
CASE WHEN 'PIVOT_ROW_GENERATOR '. "" ID "= 0 THEN 'MATTER' WHEN 'PIVOT_ROW_GENERATOR '. ' ' ID ' = 1 THEN 'MATERIAL OVERHEAD' WHEN 'PIVOT_ROW_GENERATOR '. ' ' ID ' = 2 THEN 'RESOURCE' WHEN 'PIVOT_ROW_GENERATOR '. "" ID "= 3 THEN 'OUTSIDE TREATMENT" WHEN "PIVOT_ROW_GENERATOR". "" ID "= 4 THEN ENDS"OVERHEAD"" COST_ELEMENT$ 1 ".
Of
(SELECT
0 "ID".
Of
DOUBLE
UNION ALL
SELECT
1 "ID".
Of
DOUBLE
UNION ALL
SELECT
2 "ID".
Of
DOUBLE
UNION ALL
SELECT
3 "ID".
Of
DOUBLE
UNION ALL
SELECT
4 "ID".
Of
DOUBLE) "PIVOT_ROW_GENERATOR."
(SELECT
'CST_ITEM_COSTS '. "" MATERIAL_COST ""MATERIAL_COST"
'CST_ITEM_COSTS '. "" MATERIAL_OVERHEAD_COST ""MATERIAL_OVERHEAD_COST"
'CST_ITEM_COSTS '. "" RESOURCE_COST ""RESOURCE_COST"
'CST_ITEM_COSTS '. "" OUTSIDE_PROCESSING_COST ""OUTSIDE_PROCESSING_COST"
'CST_ITEM_COSTS '. "" OVERHEAD_COST ""OVERHEAD_COST"
'CST_ITEM_COSTS '. "" INVENTORY_ITEM_ID ""INVENTORY_ITEM_ID"
'CST_ITEM_COSTS '. "" ORGANIZATION_ID ""ORGANIZATION_ID"
'CST_ITEM_COSTS '. "" COST_TYPE_ID ""COST_TYPE_ID"
'CST_ITEM_COSTS '. ' ' LAST_UPDATE_DATE ' 'LAST_UPDATE_DATE '.
Of
("CST_ITEM_COSTS" "CST_ITEM_COSTS") "PIVOT_SOURCE") 'PIVOT '.
Thanks for your help.This is the simplified and formatted code:
SELECT c.inventory_item_id inventory_item_id$1, c.organization_id organization_id_1$1, c.cost_type_id cost_type_id_1$1, c.last_update_date last_update_date_1$1, CASE WHEN pivot_row_generator.id = 0 THEN c.material_cost WHEN pivot_row_generator.id = 1 THEN c.material_overhead_cost WHEN pivot_row_generator.id = 2 THEN c.resource_cost WHEN pivot_row_generator.id = 3 THEN c.outside_processing_cost WHEN pivot_row_generator.id = 4 THEN c.overhead_cost END cost$1, CASE WHEN pivot_row_generator.id = 0 THEN 'MATERIAL' WHEN pivot_row_generator.id = 1 THEN 'MATERIAL OVERHEAD' WHEN pivot_row_generator.id = 2 THEN 'RESOURCE' WHEN pivot_row_generator.id = 3 THEN 'OUTSIDE PROCESSING' WHEN pivot_row_generator.id = 4 THEN 'OVERHEAD' END cost_element$1 FROM cst_item_costs c, (SELECT level - 1 id FROM dual CONNECT BY level <= 5) pivot_row_generator
You must put the code with braces around it commands for formatting
-
Beginner: query optimization
Hello
Given that two queries:
1)
Select id_msisdn_a, BH_LINK a id_msisdn_b
where there is no
(select 1 from bh_node b where b.id_mes = a.id_mes and b.id_msisdn = a.id_msisdn_a)
and not exists
(select 1 from bh_node b where b.id_mes = a.id_mes and b.id_msisdn = a.id_msisdn_b)
Id_msisdn_a group, id_msisdn_b
------------------------------------------------------------------------------------------------------------------
| ID | Operation | Name | Lines | Bytes | TempSpc | Cost (% CPU). Time | Pstart. Pstop |
------------------------------------------------------------------------------------------------------------------
| 0 | SELECT STATEMENT | 116K | 4990K | 320K (12) | 01:04:09 |
| 1. HASH GROUP BY. 116K | 4990K | 5928K | 320K (12) | 01:04:09 |
| 2. ANTI NESTED LOOPS. 116K | 4990K | 319KO (12) | 01:03:53 |
| 3. ANTI NESTED LOOPS. 11 M | 354 M | 318K (12) | 01:03:45 |
| 4. RANGE OF PARTITION ALL THE | 556 M | 10G | 285K (2) | 00:57:07 | 1. 6.
| 5. HASH PARTITION ALL | 556 M | 10G | 285K (2) | 00:57:07 | 1. 4.
| 6. TABLE ACCESS FULL | BH_LINK | 556 M | 10G | 285K (2) | 00:57:07 | 1. 24.
| 7. RANGE OF PARTITION ITERATOR. 32 M | 366 M | 0 (0) | 00:00:01 | KEY | KEY |
| 8. PARTITION HASH ITERATOR. 32 M | 366 M | 0 (0) | 00:00:01 | KEY | KEY |
|* 9 | INDEX UNIQUE SCAN | PK_BH_NODE | 32 M | 366 M | 0 (0) | 00:00:01 |
| 10. RANGE OF PARTITION ITERATOR. 32 M | 374 M | 0 (0) | 00:00:01 | KEY | KEY |
| 11. PARTITION HASH ITERATOR. 32 M | 374 M | 0 (0) | 00:00:01 | KEY | KEY |
| * 12 | INDEX UNIQUE SCAN | PK_BH_NODE | 32 M | 374 M | 0 (0) | 00:00:01 |
------------------------------------------------------------------------------------------------------------------
Information of predicates (identified by the operation identity card):
---------------------------------------------------
9 - access("B".") ID_MSISDN '= 'A'.' ID_MSISDN_B' AND 'B '. ' ID_MES '= 'A'. ("' ID_MES")
12 - access("B".") ID_MSISDN '= 'A'.' ID_MSISDN_A' AND 'B '. ' ID_MES '= 'A'. ("' ID_MES")
2)
Select id_msisdn_a, id_msisdn_b from BH_LINK a, BH_NODE b
where b.id_mes = a.id_mes
and not (b.id_msisdn = a.id_msisdn_a) and b.id_msisdn = a.id_msisdn_b
Id_msisdn_a group, id_msisdn_b
----------------------------------------------------------------------------------------------------------------
| ID | Operation | Name | Lines | Bytes | TempSpc | Cost (% CPU). Time | Pstart. Pstop |
---------------------------------------------------------------------------------------------------------------
| 0 | SELECT STATEMENT | 580 M | 17G | 461G (100) | 999:59:59 |
| 1. HASH GROUP BY. 580 M | 17G | 235P | 461G (100) | 999:59:59 |
| 2. RANGE OF PARTITION ALL THE | 5976T | 169P | 18G (100) | 999:59:59 | 1. 6.
|* 3 | HASH JOIN | 5976T | 169P | 124 M | 18G (100) | 999:59:59 |
| 4. HASH PARTITION ALL | 32 M | 374 M | 15163 (1) | 00:03:02 | 1. 4.
| 5. FULL RESTRICTED INDEX SCAN FAST | PK_BH_NODE | 32 M | 374 M | 15163 (1) | 00:03:02 | 1. 24.
| 6. HASH PARTITION ALL | 556 M | 10G | 285K (2) | 00:57:07 | 1. 4.
| 7. TABLE ACCESS FULL | BH_LINK | 556 M | 10G | 285K (2) | 00:57:07 | 1. 24.
---------------------------------------------------------------------------------------------------------------
Information of predicates (identified by the operation identity card):
---------------------------------------------------
3 - access("B".") ID_MES '= 'A'.' ID_MES')
filter ('B'. "" ID_MSISDN "<>' A" "." "" ID_MSISDN_A' OR 'B '. "" ID_MSISDN "<>' A" "." " ID_MSISDN_B')
/******************
ALTER TABLE BH_LINK ADD)
CONSTRAINT PK_BH_LINK
KEY ELEMENTARY SCHOOL
(ID_MSISDN_A, ID_MSIS
DN_B, ID_MES, ID_SUBTIPO_SERVICIO, ID_DESTINO_CONCRETO_SER)
THE LOCAL INDEX USE);
ALTER TABLE BH_NODE ADD)
CONSTRAINT PK_BH_NODE
KEY ELEMENTARY SCHOOL
(ID_MSISDN, ID_MES)
THE LOCAL INDEX USE);
************************/
Two questions:
((a) is the same result, produced by 1) a d2)?
((b) if the answer is affirmative, may 2) be optimized without using "is"?
Thanks in advance,
Jose Luisuser455401 wrote:
Thanks for your help.Sorry, the second query has an error; the correct is:
Select id_msisdn_a, id_msisdn_b from BH_LINK a, BH_NODE b
where b.id_mes = a.id_mes
and not (b.id_msisdn = a.id_msisdn_a OR b.id_msisdn = a.id_msisdn_b)
Id_msisdn_a group, id_msisdn_bIn this way, I invited that the result is equal, is it not?
No, for the same reason.
Query 1 excludes any group where any member of the Group has the wrong type of match in bh_node. Thiat is, to decide if a line should be included in the aggregation, you need to know something on other lines in the same group.
Your new query, like the original query 2, includes a group where a member of the Group has the right type of game. This is not the same. Saying "I drink tea." (which is similar to query 2 and your new query) is not so much saying "Nobody in my family drinks beer." (which is similar to the query 1). These two instructions may by chance be true, or they might be true in some very specific circumstances (for example, everyone in a family drink the same thing, and nobody drinks miore one thing), but in general they are independent of the statements. Your new query such as query 2, none of the group as a whole.By the Way, your request doesn't seem to improve 1):
It is an improvement of Query1. It scans bh_node once, but 1 query scans 2 times bh_node.
It is not significantl; there faster than 2 of the application, but who cares? Query 2 product of erroneous results; There is no reason to think how fast it is.Looking at your problem once again, I think that the solution I posted must do an outer join.
SELECT l.id_msisdn_a, l.id_msisdn_b FROM bh_link l LEFT OUTER JOIN bh_node n ON l.id_mes = n.ld_mes GROUP BY l.id_msisdn_a, l.id_msisdn_b HAVING COUNT ( CASE WHEN n.id_msisdn IN (l.msisdn_a, l.msisdn_b) THEN 1 END ) = 0 OR NVL (l.id_msisdn_a, l.id_msisdn_b) IS NULL -- If needed ;
Unless post you some examples of data (CREATE TABLE and INSERT statements), I can't test anything, and very similar errors occur.
-
QUERY, LOGMINER OPTIMIZER
HI friends
I have very less knowledge about the following topics, I want to improve it. Please give me some good links, notes and PDFS on it.
1 QUERY OPTIMIZER
2 STATSPACK
3 SQLTRACE
2 h TKPROF
I have no knowledge of these two topics
1 LOGMINER
4 DATAGUARD
Thank youYou have received the documentation links already. I'll give you some links to book that supplement the documentation.
susdba wrote:
HI friends
I have very less knowledge about the following topics, I want to improve it. Please give me some good links, notes, & PDFs on it.1 QUERY OPTIMIZER
2 STATSPACK
3 SQLTRACE
2 h TKPROFhttp://www.Amazon.com/cost-based-Oracle-fundamentals-experts-voice/DP/1590596366
http://www.Amazon.com/Optimizing-Oracle-performance-Cary-Millsap/DP/059600527X
http://www.Amazon.com/effective-Oracle-design-Osborne-Oracle/DP/0072230657I have no knowledge of these two topics
1 LOGMINER
4 DATAGUARD
Thank youThere is no book about Logminer, it's just a package nothing else. You can read the documentation for him, play with him and he should be fine. For the Dataguard, buy this book,
http://www.Amazon.com/Oracle-guard-Handbook-Osborne-Oracle/DP/0071621113HTH
Aman... -
Questioning the authenticity of a self declared agent Tech Optimizer call me on my land line.
I got a call from Eric Wilson saying that he intended to call me by Windows because I had downloaded a file from an unauthorized source that would have corrupted my hard dirve. It was very convincing gave me a phone number, 210-767-3298 and his ID # as 10068 me getting a 'Run' command I don't know how to check the validity of such a request, but he was now ready to accept a phone call unsolicited to my line that is listed in the telephone directory under my name. I took his information and decided to enter the Windows Web site Query Optimizer Tech and this is where it takes me. I'd like some food to go back to that.
You were right to question the authenticity of the phone call. These scam calls are usually of a person representing Windows rather than Microsoft, but in any case, the call was nothing else than a phishing attempt! Do not give any information. Their intentions are simply to separate you from your money.
Because they use the internet lines and/or phone to complete their fraud, there may be federal agencies in your country who are interested in discovering their calls. Their report directly to the appropriate agency if you feel you can contribute to their arrest and the charges.
Microsoft do NOT pick up the phone and start dialing customers and never phones/e-mails asking for personal information or asking them to visit a web site! Please do not take into account these calls and hang up immediately.
Avoid scams that use the Microsoft name fraudulently
On another note, if you have problems with your computer, please do not hesitate to post a description of the situation and the error messages you received in those forums. We would be happy to help you. (information staff unnecessary or requested !)
-
GemFire Query, which is more optimized or faster service
Hello
GemFire what type of query is more optimized or faster
Object params [] = new Object [1];
params [0] = mykey.getData;
CacheFactory.getAnyInstance () .getQueryService () .newQuery ("select * from /myregion where data = $1") .execute (params);
or
CacheFactory.getAnyInstance () .getQueryService () .newQuery ("select * from /myregion where data =" + mykey.getData) .execute (params);
I'd go with the first choice. It doesn't matter if it's faster or not today, it's a cleaner code that allows prepared query optimizations and keeps you safer techniques of SQL injection.
Maybe you are looking for
-
Satellite A100-383 does not start - not battery
Hello. I have an old Toshiba Satellite A100 - 383.Recent months its battery will remain as defendant for 20-25 minutes. OK, that's an old laptop, it's normal, I thought... I connected the laptop to the grid and I haven´t you have any problem. I staye
-
Connection to the workstation slow field
HelloMy computer is in a domain. When I connect it takes about 10 minutes to get on the desktop. My Department has not been able to solve this problem and told me to do what I can. What is the right way to fix this problem? Any help would be greatly
-
Unable to install the update. error code 646
I tried over and over to install the update for 9 microst that there not again and again. It is sleep button
-
Explore 9 v. Vista - slow and right click disabled
After having downloaded Explorer 9, my computer slowed down considerably and I'm unable to open objects on my desk, when I right-click. Reinstall Explorer 8 is not an option. Files often film and then a box appears saying that Windows has stopped w
-
I have AVira anti virus... each am I get blocked autorun message... check my update box... along the list of updates (stranded) uninstalled... How can I solve this?