Tuning read-intensive queries - OracleSQL Server Database Engine Tuning Advisor vs DMV queriesMySQL...
Aligning symbols underneath each other neatly
What is the use of 'de' preposition in 'Yo voy *de* compras todos los sábados'
How to make ice magic work from a scientific point of view?
Is using an 'empty' metaphor considered bad style?
What would the chemical name be for C13H8Cl3NO
Odd 74HCT1G125 behaviour
Should I reinstall Linux when changing the laptop's CPU?
When can a QA tester start his job?
What to look for when criticizing poetry?
Cat is tipping over bed-side lamps during the night
Why is it that Bernie Sanders is always called a "socialist"?
Play Zip, Zap, Zop
False written accusations not made public - is there law to cover this?
Why was Lupin comfortable with saying Voldemort's name?
Am I a Rude Number?
It took me a lot of time to make this, pls like. (YouTube Comments #1)
Cookies - Should the toggles be on?
Why did the villain in the first Men in Black movie care about Earth's Cockroaches?
How should I handle players who ignore the session zero agreement?
Early credit roll before the end of the film
Do theoretical physics suggest that gravity is the exchange of gravitons or deformation/bending of spacetime?
What are the exceptions to Natural Selection?
Dilemma of explaining to interviewer that he is the reason for declining second interview
Is it possible to grant users sftp access without shell access? If yes, how is it implemented?
Tuning read-intensive queries - Oracle
SQL Server Database Engine Tuning Advisor vs DMV queriesMySQL performance tuningOracle aggregate functions slows query down massivelyOracle is not using a unique index for a long keyIndex Tuning on Joined QueryComparing values between two tablesPerformance tuning for MySQL database (read only)Indexing strategy for VARCHAR2 LIKE searchwhy optimizer in Oracle database does not use index?Oracle 9i historical long queries since instance startup
Now this might be very vague but Im sure I can provide more info on them.. my query is that is it recommended to use tablespaces if different block size because I have a table in which number of reads that would happen will be very high.. Application end users are saying that the response that they are getting is slow.. and they are asking me to speed up the query..
What options do I have? I have run the sql advisor and it asked me include an index,which I did and reponse got improved.. what else can I try?
Create a new tablespace with higher blocksize (currently 8k) and import the data into the new one -- will that improve the performance? this is very much read intensive.
SELECT "ENTITY_WATCH_LIST_KEY" ,
"ENTITY_WATCH_LIST_NUMBER" ,
"WATCH_LIST_NAME" ,
"CATEGORY_DESC" ,
"TYPE_DESC" ,
"PROGRAMS" ,
"TAX_ID" ,
"TAX_ID_TYPE_CODE" ,
"IDENTIFICATION_ID" ,
"IDENTIFICATION_TYPE_DESC" ,
"DATE_OF_BIRTH" ,
"YEAR_OF_BIRTH" ,
"PLACE_OF_BIRTH" ,
"DECEASED_IND" ,
"FIRST_NAME" ,
"LAST_NAME" ,
"MIDDLE_NAME" ,
"ENTITY_NAME" ,
"ENTITY_TITLE" ,
"OCCUPATION_DESC" ,
"ADDRESS" ,
"CITY_NAME" ,
"STATE_NAME" ,
"POSTAL_CODE" ,
"COUNTRY_CODE" ,
"COUNTRY_NAME" ,
"FULL_ADDRESS" ,
"CITIZENSHIP_COUNTRY_CODE" ,
"CITIZENSHIP_COUNTRY_NAME" ,
"NATIONALITY_COUNTRY_CODE" ,
"NATIONALITY_COUNTRY_NAME" ,
"ORG_COUNTRY_OF_BUSINESS_CODE" ,
"ORG_COUNTRY_OF_BUSINESS_NAME" ,
"POLITICALLY_EXPOSED_PERSON_IND",
"CREATE_DATE" ,
"UPDATE_DATE" ,
"EXCLUDE_IND" ,
"CHANGE_BEGIN_DATE" ,
"CHANGE_END_DATE" ,
"CHANGE_CURRENT_IND" ,
"MATCH_CODE_ADDR_LINES" ,
"MATCH_CODE_CITIZENSHIP" ,
"MATCH_CODE_CITY" ,
"MATCH_CODE_COUNTRY" ,
"MATCH_CODE_FULL_ADDRESS" ,
"MATCH_CODE_INDIVIDUAL" ,
"MATCH_CODE_NATIONALITY" ,
"MATCH_CODE_ORGANIZATION" ,
"MATCH_CODE_ORG_COUNTRY" ,
"MATCH_CODE_STATE" FROM "FCFCORE"."FSC_ENTITY_WATCH_LIST_DIM" WHERE
(
"MATCH_CODE_DATE_OF_BIRTH" = :V1
AND "MATCH_CODE_INDIVIDUAL" = :V2
)
OR
(
"MATCH_CODE_DATE_OF_BIRTH" = :V3
AND "MATCH_CODE_INDIVIDUAL" = :V4
)
OR
(
"MATCH_CODE_DATE_OF_BIRTH" = :V5
AND "MATCH_CODE_INDIVIDUAL" = :V6
)
OR
(
"MATCH_CODE_DATE_OF_BIRTH" = :V7
AND "MATCH_CODE_INDIVIDUAL" = :V8
)
OR
(
"MATCH_CODE_DATE_OF_BIRTH" = :V9
AND "MATCH_CODE_INDIVIDUAL" = :V10
)
Explain plan before running the advisor::
PLAN_TABLE_OUTPUT
Plan hash value: 4020047834
| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |
------------------------------------------------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | 1 | 4351 | 33 (0)| 00:00:01 |
| 1 | INLIST ITERATOR | | | | | |
|* 2 | TABLE ACCESS BY INDEX ROWID BATCHED| FSC_ENTITY_WATCH_LIST_DIM | 1 | 4351 | 33 (0)| 00:00:01 |
|* 3 | INDEX RANGE SCAN | XIE6_MATCH_IND | 14 | | 18 (0)| 00:00:01 |
------------------------------------------------------------------------------------------------------------------
PLAN_TABLE_OUTPUT
Predicate Information (identified by operation id):
2 - filter("MATCH_CODE_INDIVIDUAL"=:V2 AND "MATCH_CODE_DATE_OF_BIRTH"=:V1 OR
"MATCH_CODE_INDIVIDUAL"=:V4 AND "MATCH_CODE_DATE_OF_BIRTH"=:V3 OR "MATCH_CODE_INDIVIDUAL"=:V6 AND
"MATCH_CODE_DATE_OF_BIRTH"=:V5 OR "MATCH_CODE_INDIVIDUAL"=:V8 AND "MATCH_CODE_DATE_OF_BIRTH"=:V7 OR
"MATCH_CODE_INDIVIDUAL"=:V10 AND "MATCH_CODE_DATE_OF_BIRTH"=:V9)
3 - access("MATCH_CODE_INDIVIDUAL"=:V2 OR "MATCH_CODE_INDIVIDUAL"=:V4 OR "MATCH_CODE_INDIVIDUAL"=:V6
OR "MATCH_CODE_INDIVIDUAL"=:V8 OR "MATCH_CODE_INDIVIDUAL"=:V10)
Inputs would be appreciated.
oracle index-tuning performance-tuning
bumped to the homepage by Community♦ 4 mins ago
This question has answers that may be good or bad; the system has marked it active so that they can be reviewed.
add a comment |
Now this might be very vague but Im sure I can provide more info on them.. my query is that is it recommended to use tablespaces if different block size because I have a table in which number of reads that would happen will be very high.. Application end users are saying that the response that they are getting is slow.. and they are asking me to speed up the query..
What options do I have? I have run the sql advisor and it asked me include an index,which I did and reponse got improved.. what else can I try?
Create a new tablespace with higher blocksize (currently 8k) and import the data into the new one -- will that improve the performance? this is very much read intensive.
SELECT "ENTITY_WATCH_LIST_KEY" ,
"ENTITY_WATCH_LIST_NUMBER" ,
"WATCH_LIST_NAME" ,
"CATEGORY_DESC" ,
"TYPE_DESC" ,
"PROGRAMS" ,
"TAX_ID" ,
"TAX_ID_TYPE_CODE" ,
"IDENTIFICATION_ID" ,
"IDENTIFICATION_TYPE_DESC" ,
"DATE_OF_BIRTH" ,
"YEAR_OF_BIRTH" ,
"PLACE_OF_BIRTH" ,
"DECEASED_IND" ,
"FIRST_NAME" ,
"LAST_NAME" ,
"MIDDLE_NAME" ,
"ENTITY_NAME" ,
"ENTITY_TITLE" ,
"OCCUPATION_DESC" ,
"ADDRESS" ,
"CITY_NAME" ,
"STATE_NAME" ,
"POSTAL_CODE" ,
"COUNTRY_CODE" ,
"COUNTRY_NAME" ,
"FULL_ADDRESS" ,
"CITIZENSHIP_COUNTRY_CODE" ,
"CITIZENSHIP_COUNTRY_NAME" ,
"NATIONALITY_COUNTRY_CODE" ,
"NATIONALITY_COUNTRY_NAME" ,
"ORG_COUNTRY_OF_BUSINESS_CODE" ,
"ORG_COUNTRY_OF_BUSINESS_NAME" ,
"POLITICALLY_EXPOSED_PERSON_IND",
"CREATE_DATE" ,
"UPDATE_DATE" ,
"EXCLUDE_IND" ,
"CHANGE_BEGIN_DATE" ,
"CHANGE_END_DATE" ,
"CHANGE_CURRENT_IND" ,
"MATCH_CODE_ADDR_LINES" ,
"MATCH_CODE_CITIZENSHIP" ,
"MATCH_CODE_CITY" ,
"MATCH_CODE_COUNTRY" ,
"MATCH_CODE_FULL_ADDRESS" ,
"MATCH_CODE_INDIVIDUAL" ,
"MATCH_CODE_NATIONALITY" ,
"MATCH_CODE_ORGANIZATION" ,
"MATCH_CODE_ORG_COUNTRY" ,
"MATCH_CODE_STATE" FROM "FCFCORE"."FSC_ENTITY_WATCH_LIST_DIM" WHERE
(
"MATCH_CODE_DATE_OF_BIRTH" = :V1
AND "MATCH_CODE_INDIVIDUAL" = :V2
)
OR
(
"MATCH_CODE_DATE_OF_BIRTH" = :V3
AND "MATCH_CODE_INDIVIDUAL" = :V4
)
OR
(
"MATCH_CODE_DATE_OF_BIRTH" = :V5
AND "MATCH_CODE_INDIVIDUAL" = :V6
)
OR
(
"MATCH_CODE_DATE_OF_BIRTH" = :V7
AND "MATCH_CODE_INDIVIDUAL" = :V8
)
OR
(
"MATCH_CODE_DATE_OF_BIRTH" = :V9
AND "MATCH_CODE_INDIVIDUAL" = :V10
)
Explain plan before running the advisor::
PLAN_TABLE_OUTPUT
Plan hash value: 4020047834
| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |
------------------------------------------------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | 1 | 4351 | 33 (0)| 00:00:01 |
| 1 | INLIST ITERATOR | | | | | |
|* 2 | TABLE ACCESS BY INDEX ROWID BATCHED| FSC_ENTITY_WATCH_LIST_DIM | 1 | 4351 | 33 (0)| 00:00:01 |
|* 3 | INDEX RANGE SCAN | XIE6_MATCH_IND | 14 | | 18 (0)| 00:00:01 |
------------------------------------------------------------------------------------------------------------------
PLAN_TABLE_OUTPUT
Predicate Information (identified by operation id):
2 - filter("MATCH_CODE_INDIVIDUAL"=:V2 AND "MATCH_CODE_DATE_OF_BIRTH"=:V1 OR
"MATCH_CODE_INDIVIDUAL"=:V4 AND "MATCH_CODE_DATE_OF_BIRTH"=:V3 OR "MATCH_CODE_INDIVIDUAL"=:V6 AND
"MATCH_CODE_DATE_OF_BIRTH"=:V5 OR "MATCH_CODE_INDIVIDUAL"=:V8 AND "MATCH_CODE_DATE_OF_BIRTH"=:V7 OR
"MATCH_CODE_INDIVIDUAL"=:V10 AND "MATCH_CODE_DATE_OF_BIRTH"=:V9)
3 - access("MATCH_CODE_INDIVIDUAL"=:V2 OR "MATCH_CODE_INDIVIDUAL"=:V4 OR "MATCH_CODE_INDIVIDUAL"=:V6
OR "MATCH_CODE_INDIVIDUAL"=:V8 OR "MATCH_CODE_INDIVIDUAL"=:V10)
Inputs would be appreciated.
oracle index-tuning performance-tuning
bumped to the homepage by Community♦ 4 mins ago
This question has answers that may be good or bad; the system has marked it active so that they can be reviewed.
1
Did you look at the explain plan for the query? Increasing the block size may not help if you are doing full table scans and creating large buffer scans anyways. Have you taken a look at the active_session_history to see where the majority of waits are occurring? Are you following proper guidelines like using bind variable, doing the proper joins (again, look at your explain plan). If the query is running multiple times, are you getting multiple hash plans or are you re-executing a good plan and have plan stability? SQL Profiling?
– Data Flux
Nov 12 '15 at 17:12
have added the sql and explain plan for investigation
– tesla747
Nov 13 '15 at 15:33
So is there an index onMATCH_CODE_INDIVIDUAL
and another onMATCH_CODE_DATE_OF_BIRTH
now? It looks like the "before" explain plan indicates there was an indexXIE6_MATCH_IND
which was onMATCH_CODE_INDIVIDUAL
. If you now have separate indexes, one per column, you might try a composite index, but that might be a pretty big index.
– Mark Stewart
Nov 13 '15 at 16:11
I really do not want to slow down the response which is getting now.
– tesla747
Nov 13 '15 at 16:12
add a comment |
Now this might be very vague but Im sure I can provide more info on them.. my query is that is it recommended to use tablespaces if different block size because I have a table in which number of reads that would happen will be very high.. Application end users are saying that the response that they are getting is slow.. and they are asking me to speed up the query..
What options do I have? I have run the sql advisor and it asked me include an index,which I did and reponse got improved.. what else can I try?
Create a new tablespace with higher blocksize (currently 8k) and import the data into the new one -- will that improve the performance? this is very much read intensive.
SELECT "ENTITY_WATCH_LIST_KEY" ,
"ENTITY_WATCH_LIST_NUMBER" ,
"WATCH_LIST_NAME" ,
"CATEGORY_DESC" ,
"TYPE_DESC" ,
"PROGRAMS" ,
"TAX_ID" ,
"TAX_ID_TYPE_CODE" ,
"IDENTIFICATION_ID" ,
"IDENTIFICATION_TYPE_DESC" ,
"DATE_OF_BIRTH" ,
"YEAR_OF_BIRTH" ,
"PLACE_OF_BIRTH" ,
"DECEASED_IND" ,
"FIRST_NAME" ,
"LAST_NAME" ,
"MIDDLE_NAME" ,
"ENTITY_NAME" ,
"ENTITY_TITLE" ,
"OCCUPATION_DESC" ,
"ADDRESS" ,
"CITY_NAME" ,
"STATE_NAME" ,
"POSTAL_CODE" ,
"COUNTRY_CODE" ,
"COUNTRY_NAME" ,
"FULL_ADDRESS" ,
"CITIZENSHIP_COUNTRY_CODE" ,
"CITIZENSHIP_COUNTRY_NAME" ,
"NATIONALITY_COUNTRY_CODE" ,
"NATIONALITY_COUNTRY_NAME" ,
"ORG_COUNTRY_OF_BUSINESS_CODE" ,
"ORG_COUNTRY_OF_BUSINESS_NAME" ,
"POLITICALLY_EXPOSED_PERSON_IND",
"CREATE_DATE" ,
"UPDATE_DATE" ,
"EXCLUDE_IND" ,
"CHANGE_BEGIN_DATE" ,
"CHANGE_END_DATE" ,
"CHANGE_CURRENT_IND" ,
"MATCH_CODE_ADDR_LINES" ,
"MATCH_CODE_CITIZENSHIP" ,
"MATCH_CODE_CITY" ,
"MATCH_CODE_COUNTRY" ,
"MATCH_CODE_FULL_ADDRESS" ,
"MATCH_CODE_INDIVIDUAL" ,
"MATCH_CODE_NATIONALITY" ,
"MATCH_CODE_ORGANIZATION" ,
"MATCH_CODE_ORG_COUNTRY" ,
"MATCH_CODE_STATE" FROM "FCFCORE"."FSC_ENTITY_WATCH_LIST_DIM" WHERE
(
"MATCH_CODE_DATE_OF_BIRTH" = :V1
AND "MATCH_CODE_INDIVIDUAL" = :V2
)
OR
(
"MATCH_CODE_DATE_OF_BIRTH" = :V3
AND "MATCH_CODE_INDIVIDUAL" = :V4
)
OR
(
"MATCH_CODE_DATE_OF_BIRTH" = :V5
AND "MATCH_CODE_INDIVIDUAL" = :V6
)
OR
(
"MATCH_CODE_DATE_OF_BIRTH" = :V7
AND "MATCH_CODE_INDIVIDUAL" = :V8
)
OR
(
"MATCH_CODE_DATE_OF_BIRTH" = :V9
AND "MATCH_CODE_INDIVIDUAL" = :V10
)
Explain plan before running the advisor::
PLAN_TABLE_OUTPUT
Plan hash value: 4020047834
| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |
------------------------------------------------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | 1 | 4351 | 33 (0)| 00:00:01 |
| 1 | INLIST ITERATOR | | | | | |
|* 2 | TABLE ACCESS BY INDEX ROWID BATCHED| FSC_ENTITY_WATCH_LIST_DIM | 1 | 4351 | 33 (0)| 00:00:01 |
|* 3 | INDEX RANGE SCAN | XIE6_MATCH_IND | 14 | | 18 (0)| 00:00:01 |
------------------------------------------------------------------------------------------------------------------
PLAN_TABLE_OUTPUT
Predicate Information (identified by operation id):
2 - filter("MATCH_CODE_INDIVIDUAL"=:V2 AND "MATCH_CODE_DATE_OF_BIRTH"=:V1 OR
"MATCH_CODE_INDIVIDUAL"=:V4 AND "MATCH_CODE_DATE_OF_BIRTH"=:V3 OR "MATCH_CODE_INDIVIDUAL"=:V6 AND
"MATCH_CODE_DATE_OF_BIRTH"=:V5 OR "MATCH_CODE_INDIVIDUAL"=:V8 AND "MATCH_CODE_DATE_OF_BIRTH"=:V7 OR
"MATCH_CODE_INDIVIDUAL"=:V10 AND "MATCH_CODE_DATE_OF_BIRTH"=:V9)
3 - access("MATCH_CODE_INDIVIDUAL"=:V2 OR "MATCH_CODE_INDIVIDUAL"=:V4 OR "MATCH_CODE_INDIVIDUAL"=:V6
OR "MATCH_CODE_INDIVIDUAL"=:V8 OR "MATCH_CODE_INDIVIDUAL"=:V10)
Inputs would be appreciated.
oracle index-tuning performance-tuning
Now this might be very vague but Im sure I can provide more info on them.. my query is that is it recommended to use tablespaces if different block size because I have a table in which number of reads that would happen will be very high.. Application end users are saying that the response that they are getting is slow.. and they are asking me to speed up the query..
What options do I have? I have run the sql advisor and it asked me include an index,which I did and reponse got improved.. what else can I try?
Create a new tablespace with higher blocksize (currently 8k) and import the data into the new one -- will that improve the performance? this is very much read intensive.
SELECT "ENTITY_WATCH_LIST_KEY" ,
"ENTITY_WATCH_LIST_NUMBER" ,
"WATCH_LIST_NAME" ,
"CATEGORY_DESC" ,
"TYPE_DESC" ,
"PROGRAMS" ,
"TAX_ID" ,
"TAX_ID_TYPE_CODE" ,
"IDENTIFICATION_ID" ,
"IDENTIFICATION_TYPE_DESC" ,
"DATE_OF_BIRTH" ,
"YEAR_OF_BIRTH" ,
"PLACE_OF_BIRTH" ,
"DECEASED_IND" ,
"FIRST_NAME" ,
"LAST_NAME" ,
"MIDDLE_NAME" ,
"ENTITY_NAME" ,
"ENTITY_TITLE" ,
"OCCUPATION_DESC" ,
"ADDRESS" ,
"CITY_NAME" ,
"STATE_NAME" ,
"POSTAL_CODE" ,
"COUNTRY_CODE" ,
"COUNTRY_NAME" ,
"FULL_ADDRESS" ,
"CITIZENSHIP_COUNTRY_CODE" ,
"CITIZENSHIP_COUNTRY_NAME" ,
"NATIONALITY_COUNTRY_CODE" ,
"NATIONALITY_COUNTRY_NAME" ,
"ORG_COUNTRY_OF_BUSINESS_CODE" ,
"ORG_COUNTRY_OF_BUSINESS_NAME" ,
"POLITICALLY_EXPOSED_PERSON_IND",
"CREATE_DATE" ,
"UPDATE_DATE" ,
"EXCLUDE_IND" ,
"CHANGE_BEGIN_DATE" ,
"CHANGE_END_DATE" ,
"CHANGE_CURRENT_IND" ,
"MATCH_CODE_ADDR_LINES" ,
"MATCH_CODE_CITIZENSHIP" ,
"MATCH_CODE_CITY" ,
"MATCH_CODE_COUNTRY" ,
"MATCH_CODE_FULL_ADDRESS" ,
"MATCH_CODE_INDIVIDUAL" ,
"MATCH_CODE_NATIONALITY" ,
"MATCH_CODE_ORGANIZATION" ,
"MATCH_CODE_ORG_COUNTRY" ,
"MATCH_CODE_STATE" FROM "FCFCORE"."FSC_ENTITY_WATCH_LIST_DIM" WHERE
(
"MATCH_CODE_DATE_OF_BIRTH" = :V1
AND "MATCH_CODE_INDIVIDUAL" = :V2
)
OR
(
"MATCH_CODE_DATE_OF_BIRTH" = :V3
AND "MATCH_CODE_INDIVIDUAL" = :V4
)
OR
(
"MATCH_CODE_DATE_OF_BIRTH" = :V5
AND "MATCH_CODE_INDIVIDUAL" = :V6
)
OR
(
"MATCH_CODE_DATE_OF_BIRTH" = :V7
AND "MATCH_CODE_INDIVIDUAL" = :V8
)
OR
(
"MATCH_CODE_DATE_OF_BIRTH" = :V9
AND "MATCH_CODE_INDIVIDUAL" = :V10
)
Explain plan before running the advisor::
PLAN_TABLE_OUTPUT
Plan hash value: 4020047834
| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |
------------------------------------------------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | 1 | 4351 | 33 (0)| 00:00:01 |
| 1 | INLIST ITERATOR | | | | | |
|* 2 | TABLE ACCESS BY INDEX ROWID BATCHED| FSC_ENTITY_WATCH_LIST_DIM | 1 | 4351 | 33 (0)| 00:00:01 |
|* 3 | INDEX RANGE SCAN | XIE6_MATCH_IND | 14 | | 18 (0)| 00:00:01 |
------------------------------------------------------------------------------------------------------------------
PLAN_TABLE_OUTPUT
Predicate Information (identified by operation id):
2 - filter("MATCH_CODE_INDIVIDUAL"=:V2 AND "MATCH_CODE_DATE_OF_BIRTH"=:V1 OR
"MATCH_CODE_INDIVIDUAL"=:V4 AND "MATCH_CODE_DATE_OF_BIRTH"=:V3 OR "MATCH_CODE_INDIVIDUAL"=:V6 AND
"MATCH_CODE_DATE_OF_BIRTH"=:V5 OR "MATCH_CODE_INDIVIDUAL"=:V8 AND "MATCH_CODE_DATE_OF_BIRTH"=:V7 OR
"MATCH_CODE_INDIVIDUAL"=:V10 AND "MATCH_CODE_DATE_OF_BIRTH"=:V9)
3 - access("MATCH_CODE_INDIVIDUAL"=:V2 OR "MATCH_CODE_INDIVIDUAL"=:V4 OR "MATCH_CODE_INDIVIDUAL"=:V6
OR "MATCH_CODE_INDIVIDUAL"=:V8 OR "MATCH_CODE_INDIVIDUAL"=:V10)
Inputs would be appreciated.
oracle index-tuning performance-tuning
oracle index-tuning performance-tuning
edited Nov 13 '15 at 16:05
Julien Vavasseur
9,17621937
9,17621937
asked Nov 12 '15 at 16:45
tesla747tesla747
87952055
87952055
bumped to the homepage by Community♦ 4 mins ago
This question has answers that may be good or bad; the system has marked it active so that they can be reviewed.
bumped to the homepage by Community♦ 4 mins ago
This question has answers that may be good or bad; the system has marked it active so that they can be reviewed.
1
Did you look at the explain plan for the query? Increasing the block size may not help if you are doing full table scans and creating large buffer scans anyways. Have you taken a look at the active_session_history to see where the majority of waits are occurring? Are you following proper guidelines like using bind variable, doing the proper joins (again, look at your explain plan). If the query is running multiple times, are you getting multiple hash plans or are you re-executing a good plan and have plan stability? SQL Profiling?
– Data Flux
Nov 12 '15 at 17:12
have added the sql and explain plan for investigation
– tesla747
Nov 13 '15 at 15:33
So is there an index onMATCH_CODE_INDIVIDUAL
and another onMATCH_CODE_DATE_OF_BIRTH
now? It looks like the "before" explain plan indicates there was an indexXIE6_MATCH_IND
which was onMATCH_CODE_INDIVIDUAL
. If you now have separate indexes, one per column, you might try a composite index, but that might be a pretty big index.
– Mark Stewart
Nov 13 '15 at 16:11
I really do not want to slow down the response which is getting now.
– tesla747
Nov 13 '15 at 16:12
add a comment |
1
Did you look at the explain plan for the query? Increasing the block size may not help if you are doing full table scans and creating large buffer scans anyways. Have you taken a look at the active_session_history to see where the majority of waits are occurring? Are you following proper guidelines like using bind variable, doing the proper joins (again, look at your explain plan). If the query is running multiple times, are you getting multiple hash plans or are you re-executing a good plan and have plan stability? SQL Profiling?
– Data Flux
Nov 12 '15 at 17:12
have added the sql and explain plan for investigation
– tesla747
Nov 13 '15 at 15:33
So is there an index onMATCH_CODE_INDIVIDUAL
and another onMATCH_CODE_DATE_OF_BIRTH
now? It looks like the "before" explain plan indicates there was an indexXIE6_MATCH_IND
which was onMATCH_CODE_INDIVIDUAL
. If you now have separate indexes, one per column, you might try a composite index, but that might be a pretty big index.
– Mark Stewart
Nov 13 '15 at 16:11
I really do not want to slow down the response which is getting now.
– tesla747
Nov 13 '15 at 16:12
1
1
Did you look at the explain plan for the query? Increasing the block size may not help if you are doing full table scans and creating large buffer scans anyways. Have you taken a look at the active_session_history to see where the majority of waits are occurring? Are you following proper guidelines like using bind variable, doing the proper joins (again, look at your explain plan). If the query is running multiple times, are you getting multiple hash plans or are you re-executing a good plan and have plan stability? SQL Profiling?
– Data Flux
Nov 12 '15 at 17:12
Did you look at the explain plan for the query? Increasing the block size may not help if you are doing full table scans and creating large buffer scans anyways. Have you taken a look at the active_session_history to see where the majority of waits are occurring? Are you following proper guidelines like using bind variable, doing the proper joins (again, look at your explain plan). If the query is running multiple times, are you getting multiple hash plans or are you re-executing a good plan and have plan stability? SQL Profiling?
– Data Flux
Nov 12 '15 at 17:12
have added the sql and explain plan for investigation
– tesla747
Nov 13 '15 at 15:33
have added the sql and explain plan for investigation
– tesla747
Nov 13 '15 at 15:33
So is there an index on
MATCH_CODE_INDIVIDUAL
and another on MATCH_CODE_DATE_OF_BIRTH
now? It looks like the "before" explain plan indicates there was an index XIE6_MATCH_IND
which was on MATCH_CODE_INDIVIDUAL
. If you now have separate indexes, one per column, you might try a composite index, but that might be a pretty big index.– Mark Stewart
Nov 13 '15 at 16:11
So is there an index on
MATCH_CODE_INDIVIDUAL
and another on MATCH_CODE_DATE_OF_BIRTH
now? It looks like the "before" explain plan indicates there was an index XIE6_MATCH_IND
which was on MATCH_CODE_INDIVIDUAL
. If you now have separate indexes, one per column, you might try a composite index, but that might be a pretty big index.– Mark Stewart
Nov 13 '15 at 16:11
I really do not want to slow down the response which is getting now.
– tesla747
Nov 13 '15 at 16:12
I really do not want to slow down the response which is getting now.
– tesla747
Nov 13 '15 at 16:12
add a comment |
1 Answer
1
active
oldest
votes
Using a different blocksize would probably be the last thing to try, and only if there is a good reason to do so. A good reason might include
- The majority of queries do full table scans that happen to retrieve several blocks from disk at once
- The table includes large objects (LOBs) that are bigger than 8k
But in general, I would say a larger blocksize won't help for most environments; and for those that need it, it would be a minor improvement. Derek's comment above has good things to look at; if you post the query and the explain plan, we can provide better advice.
Based on the query and explain plan you provided, you may want to try a composite index; the order of the columns below is assuming there are fewer unique values for MATCH_CODE_DATE_OF_BIRTH than for MATCH_CODE_INDIVIDUAL:
create index IXE6_MATCH_DATE_IND
on FSC_ENTITY_WATCH_LIST_DIM (
MATCH_CODE_DATE_OF_BIRTH,
MATCH_CODE_INDIVIDUAL
);
Also, are all the bind variables always populated with a value, or are sometimes some of them null? IE: if :V9
and :V10
are often null, you might be able to do something to your query like
...
OR
(
:v9 is not null and :v10 is not null and
"MATCH_CODE_DATE_OF_BIRTH" = :V9
AND "MATCH_CODE_INDIVIDUAL" = :V10
)
have added the sql and explain plan for investigation.
– tesla747
Nov 13 '15 at 15:33
add a comment |
Your Answer
StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "182"
};
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function() {
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled) {
StackExchange.using("snippets", function() {
createEditor();
});
}
else {
createEditor();
}
});
function createEditor() {
StackExchange.prepareEditor({
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: false,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: null,
bindNavPrevention: true,
postfix: "",
imageUploader: {
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
},
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
});
}
});
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fdba.stackexchange.com%2fquestions%2f120882%2ftuning-read-intensive-queries-oracle%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
1 Answer
1
active
oldest
votes
1 Answer
1
active
oldest
votes
active
oldest
votes
active
oldest
votes
Using a different blocksize would probably be the last thing to try, and only if there is a good reason to do so. A good reason might include
- The majority of queries do full table scans that happen to retrieve several blocks from disk at once
- The table includes large objects (LOBs) that are bigger than 8k
But in general, I would say a larger blocksize won't help for most environments; and for those that need it, it would be a minor improvement. Derek's comment above has good things to look at; if you post the query and the explain plan, we can provide better advice.
Based on the query and explain plan you provided, you may want to try a composite index; the order of the columns below is assuming there are fewer unique values for MATCH_CODE_DATE_OF_BIRTH than for MATCH_CODE_INDIVIDUAL:
create index IXE6_MATCH_DATE_IND
on FSC_ENTITY_WATCH_LIST_DIM (
MATCH_CODE_DATE_OF_BIRTH,
MATCH_CODE_INDIVIDUAL
);
Also, are all the bind variables always populated with a value, or are sometimes some of them null? IE: if :V9
and :V10
are often null, you might be able to do something to your query like
...
OR
(
:v9 is not null and :v10 is not null and
"MATCH_CODE_DATE_OF_BIRTH" = :V9
AND "MATCH_CODE_INDIVIDUAL" = :V10
)
have added the sql and explain plan for investigation.
– tesla747
Nov 13 '15 at 15:33
add a comment |
Using a different blocksize would probably be the last thing to try, and only if there is a good reason to do so. A good reason might include
- The majority of queries do full table scans that happen to retrieve several blocks from disk at once
- The table includes large objects (LOBs) that are bigger than 8k
But in general, I would say a larger blocksize won't help for most environments; and for those that need it, it would be a minor improvement. Derek's comment above has good things to look at; if you post the query and the explain plan, we can provide better advice.
Based on the query and explain plan you provided, you may want to try a composite index; the order of the columns below is assuming there are fewer unique values for MATCH_CODE_DATE_OF_BIRTH than for MATCH_CODE_INDIVIDUAL:
create index IXE6_MATCH_DATE_IND
on FSC_ENTITY_WATCH_LIST_DIM (
MATCH_CODE_DATE_OF_BIRTH,
MATCH_CODE_INDIVIDUAL
);
Also, are all the bind variables always populated with a value, or are sometimes some of them null? IE: if :V9
and :V10
are often null, you might be able to do something to your query like
...
OR
(
:v9 is not null and :v10 is not null and
"MATCH_CODE_DATE_OF_BIRTH" = :V9
AND "MATCH_CODE_INDIVIDUAL" = :V10
)
have added the sql and explain plan for investigation.
– tesla747
Nov 13 '15 at 15:33
add a comment |
Using a different blocksize would probably be the last thing to try, and only if there is a good reason to do so. A good reason might include
- The majority of queries do full table scans that happen to retrieve several blocks from disk at once
- The table includes large objects (LOBs) that are bigger than 8k
But in general, I would say a larger blocksize won't help for most environments; and for those that need it, it would be a minor improvement. Derek's comment above has good things to look at; if you post the query and the explain plan, we can provide better advice.
Based on the query and explain plan you provided, you may want to try a composite index; the order of the columns below is assuming there are fewer unique values for MATCH_CODE_DATE_OF_BIRTH than for MATCH_CODE_INDIVIDUAL:
create index IXE6_MATCH_DATE_IND
on FSC_ENTITY_WATCH_LIST_DIM (
MATCH_CODE_DATE_OF_BIRTH,
MATCH_CODE_INDIVIDUAL
);
Also, are all the bind variables always populated with a value, or are sometimes some of them null? IE: if :V9
and :V10
are often null, you might be able to do something to your query like
...
OR
(
:v9 is not null and :v10 is not null and
"MATCH_CODE_DATE_OF_BIRTH" = :V9
AND "MATCH_CODE_INDIVIDUAL" = :V10
)
Using a different blocksize would probably be the last thing to try, and only if there is a good reason to do so. A good reason might include
- The majority of queries do full table scans that happen to retrieve several blocks from disk at once
- The table includes large objects (LOBs) that are bigger than 8k
But in general, I would say a larger blocksize won't help for most environments; and for those that need it, it would be a minor improvement. Derek's comment above has good things to look at; if you post the query and the explain plan, we can provide better advice.
Based on the query and explain plan you provided, you may want to try a composite index; the order of the columns below is assuming there are fewer unique values for MATCH_CODE_DATE_OF_BIRTH than for MATCH_CODE_INDIVIDUAL:
create index IXE6_MATCH_DATE_IND
on FSC_ENTITY_WATCH_LIST_DIM (
MATCH_CODE_DATE_OF_BIRTH,
MATCH_CODE_INDIVIDUAL
);
Also, are all the bind variables always populated with a value, or are sometimes some of them null? IE: if :V9
and :V10
are often null, you might be able to do something to your query like
...
OR
(
:v9 is not null and :v10 is not null and
"MATCH_CODE_DATE_OF_BIRTH" = :V9
AND "MATCH_CODE_INDIVIDUAL" = :V10
)
edited Nov 13 '15 at 16:34
answered Nov 12 '15 at 17:27
Mark StewartMark Stewart
7881621
7881621
have added the sql and explain plan for investigation.
– tesla747
Nov 13 '15 at 15:33
add a comment |
have added the sql and explain plan for investigation.
– tesla747
Nov 13 '15 at 15:33
have added the sql and explain plan for investigation.
– tesla747
Nov 13 '15 at 15:33
have added the sql and explain plan for investigation.
– tesla747
Nov 13 '15 at 15:33
add a comment |
Thanks for contributing an answer to Database Administrators Stack Exchange!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fdba.stackexchange.com%2fquestions%2f120882%2ftuning-read-intensive-queries-oracle%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
1
Did you look at the explain plan for the query? Increasing the block size may not help if you are doing full table scans and creating large buffer scans anyways. Have you taken a look at the active_session_history to see where the majority of waits are occurring? Are you following proper guidelines like using bind variable, doing the proper joins (again, look at your explain plan). If the query is running multiple times, are you getting multiple hash plans or are you re-executing a good plan and have plan stability? SQL Profiling?
– Data Flux
Nov 12 '15 at 17:12
have added the sql and explain plan for investigation
– tesla747
Nov 13 '15 at 15:33
So is there an index on
MATCH_CODE_INDIVIDUAL
and another onMATCH_CODE_DATE_OF_BIRTH
now? It looks like the "before" explain plan indicates there was an indexXIE6_MATCH_IND
which was onMATCH_CODE_INDIVIDUAL
. If you now have separate indexes, one per column, you might try a composite index, but that might be a pretty big index.– Mark Stewart
Nov 13 '15 at 16:11
I really do not want to slow down the response which is getting now.
– tesla747
Nov 13 '15 at 16:12