Oracle Tuning Tips
Oracle Tuning Tips
Development
by TechHairBall
Blog Main / Archive / Invite Peers / Connect to this
blog
Do not index every column in the table - have only those indexes, which are
required.
Try to avoid large data retrievals, since if the data being retrieved from a table
is more than 10%-20% of the total data, Oracle will most likely do the FST.
Avoid the use of NOT IN or HAVING in the WHERE clause. Instead, use the
NOT EXISTS clause.
Avoid the LIKE parameter if = will suffice. Using any Oracle function will
invalidate the index, causing a full-table scan.
Never mix data types in Oracle queries, as it will invalidate the index. If the
column is numeric, remember not to use quotes (e.g., salary = 50000). For
char index columns, always use single quotes (e.g., name = 'NAME').
Remember that Oracle's rule-based optimizer looks at the order of table
names in the FROM clause to determine the driving table. Always make sure
that the last table specified in the FROM clause is the table that will return the
smallest number of rows. In other words, specify multiple tables with the
largest result set table specified first in the FROM clause.
Use the Oracle "decode" function to minimize the number of times a table has
to be selected.
To turn off an index you do not want to use (only with a cost-based
optimizer), concatenate a null string to the index column name (e.g., name||')
or add zero to a numeric column name (e.g., salary+0). With the rule-based
optimizer, this allows you to manually choose the most selective index to
service your query.
If your query will return more than 20 percent of the rows in the table, use a
full-table scan rather than an index scan.