tag:blogger.com,1999:blog-91568463518479279022024-03-13T15:22:04.044-07:00Ravi Kiran MajetyUnknownnoreply@blogger.comBlogger4125tag:blogger.com,1999:blog-9156846351847927902.post-8660821211429586202010-11-07T08:13:00.001-08:002010-11-07T08:15:15.125-08:00Using Database Hints<span xmlns=""><p><span style="color:black"><span style="font-family:Arial; font-size:10pt">The application developer and end users know more about the data and how it is used than the optimizer does. Oracle provides a method known as HINTS to enable you to tell the optimizer the method to use for the SQL statement. Oracle recommends that HINTS not be used as the main method of controlling the optimization for SQL statements. Instead, the SQL statement should be appropriately rewritten for better performance.</span><span style="font-family:Tahoma; font-size:7pt"><br /> </span></span></p><p><span style="color:black"><span style="font-family:Arial; font-size:10pt">You can use hints to specify:</span><span style="font-family:Tahoma; font-size:7pt"><br /> </span></span></p><ul><li><span style="color:black"><span style="font-family:Arial; font-size:10pt">The optimization approach for a SQL statement </span><span style="font-family:Tahoma; font-size:7pt"><br /> </span></span></li><li><span style="color:black"><span style="font-family:Arial; font-size:10pt">The goal of the cost-based approach for a SQL statement </span><span style="font-family:Tahoma; font-size:7pt"><br /> </span></span></li><li><span style="color:black"><span style="font-family:Arial; font-size:10pt">The access path for a table accessed by the statement </span><span style="font-family:Tahoma; font-size:7pt"><br /> </span></span></li><li><span style="color:black"><span style="font-family:Arial; font-size:10pt">The join order for a join statement </span><span style="font-family:Tahoma; font-size:7pt"><br /> </span></span></li><li><span style="color:black"><span style="font-family:Arial; font-size:10pt">A join operation in a join statement </span><span style="font-family:Tahoma; font-size:7pt"><br /> </span></span></li></ul><p><span style="color:black"><span style="font-family:Arial; font-size:10pt">A SQL statement can have only one comment containing HINTS. The HINT must be placed after the SELECT, UPDATE, or DELETE keyword in the SQL statement. It should be preceded by /*+ and followed by */ as seen in this example:</span><span style="font-family:Tahoma; font-size:7pt"><br /> </span></span></p><p><span style="color:black"><span style="font-family:Courier New; font-size:10pt">/*+ FULL(a) */</span><span style="font-family:Lucida Console; font-size:7pt"><br /> </span></span></p><p><span style="color:black"><span style="font-family:Arial; font-size:10pt">An alternate approach is to precede the HINT with --+. If multiple HINTS are used, they must be separated by spaces. </span><span style="font-family:Tahoma; font-size:7pt"><br /> </span></span></p><p><span style="color:black"><span style="font-family:Arial; font-size:10pt">Here is an example of a statement using a hint of the first type:</span><span style="font-family:Tahoma; font-size:7pt"><br /> </span></span></p><p><span style="color:black"><span style="font-family:Courier New; font-size:10pt">SELECT /*+ FULL(a) */ *<br />FROM EMP a<br />WHERE empno > 1;</span><span style="font-family:Lucida Console; font-size:7pt"><br /> </span></span></p><p><span style="color:black"><span style="font-family:Arial; font-size:10pt">Note in this case that we are using the FULL hint, which indicates to Oracle that a full tablescan should occur on the EMP table. Note too that we have aliased the hint, which is a good practice but we could have used the table name as well. The other hint form could have been used in this manner:</span><span style="font-family:Tahoma; font-size:7pt"><br /> </span></span></p><p><span style="color:black"><span style="font-family:Courier New; font-size:10pt">SELECT --+ FULL(emp)<br />*<br />FROM EMP a<br />WHERE empno > 1;</span><span style="font-family:Lucida Console; font-size:7pt"><br /> </span></span></p><p><span style="color:#221995; font-family:Arial; font-size:10pt"><strong>Insights into HINTS Usage</strong></span><span style="color:black; font-family:Tahoma; font-size:7pt"><br /> </span></p><ul><li><span style="color:black"><span style="font-family:Arial; font-size:10pt">If HINTS are incorrectly specified, Oracle will treat the HINT as a comment and will ignore it during SQL statement optimization. You will NOT receive an error message. </span><span style="font-family:Tahoma; font-size:7pt"><br /> </span></span></li><li><span style="color:black"><span style="font-family:Arial; font-size:10pt">If multiple HINTS exist, Oracle will ignore those with syntax errors but will use those that are correctly included in the statement. </span><span style="font-family:Tahoma; font-size:7pt"><br /> </span></span></li><li><span style="color:black"><span style="font-family:Arial; font-size:10pt">If any of the HINTS provide conflicting optimization requests, Oracle will not choose between them, and conflicting HINTS will be ignored.</span><span style="font-family:Tahoma; font-size:7pt"><br /> </span></span></li><li><span style="color:black"><span style="font-family:Arial; font-size:10pt">The optimizer recognizes hints only when using the cost-based approach. If you include a hint (except the RULE hint) in a statement block, the optimizer automatically uses the cost-based approach. </span><span style="font-family:Tahoma; font-size:7pt"><br /> </span></span></li></ul><p><span style="color:black"><span style="font-family:Arial; font-size:10pt"><strong>HINTS and Their Meanings</strong></span><span style="font-family:Tahoma; font-size:7pt"><br /> </span></span></p><div><table border="0" style="border-collapse:collapse"><colgroup><col style="width:184px"><col style="width:446px"></colgroup><tbody valign="top"><tr style="background: #0059ad"><td style="padding-top: 3px; padding-left: 3px; padding-bottom: 3px; padding-right: 3px; border-bottom: solid #adcfef 0.5pt; border-right: solid #adcfef 0.5pt"><p><span style="color:#adcfef; font-family:Arial; font-size:10pt"><strong>Hints</strong></span></p></td><td style="padding-top: 3px; padding-left: 3px; padding-bottom: 3px; padding-right: 3px; border-left: none; border-bottom: solid #adcfef 0.5pt"><p style="text-align: center"><span style="color:#adcfef; font-family:Arial; font-size:10pt"><strong>Meanings</strong></span></p></td></tr><tr><td style="padding-top: 3px; padding-left: 3px; padding-bottom: 3px; padding-right: 3px; border-bottom: solid #dedfe7 0.5pt; border-right: solid #dedfe7 0.5pt"><p><span style="font-family:Arial; font-size:10pt">ALL_ROWS</span></p></td><td style="padding-top: 3px; padding-left: 3px; padding-bottom: 3px; padding-right: 3px; border-left: none; border-bottom: solid #dedfe7 0.5pt"><p><span style="font-family:Arial; font-size:10pt">Uses the Cost Based Optimizer if tables or indexes are analyzed. You should set this option if you have a database that is used predominantly for batch processing such as a Data Warehouse.</span></p></td></tr><tr><td style="padding-top: 3px; padding-left: 3px; padding-bottom: 3px; padding-right: 3px; border-bottom: solid #dedfe7 0.5pt; border-right: solid #dedfe7 0.5pt"><p><span style="font-family:Arial; font-size:10pt">FIRST_ROWS</span></p></td><td style="padding-top: 3px; padding-left: 3px; padding-bottom: 3px; padding-right: 3px; border-left: none; border-bottom: solid #dedfe7 0.5pt"><p><span style="font-family:Arial; font-size:10pt">Uses the Cost Based Optimizer if tables or indexes are analyzed. You should set this option if you have a database that is used predominantly for OLTP processing.</span></p></td></tr><tr><td style="padding-top: 3px; padding-left: 3px; padding-bottom: 3px; padding-right: 3px; border-bottom: solid #dedfe7 0.5pt; border-right: solid #dedfe7 0.5pt"><p><span style="font-family:Arial; font-size:10pt">CHOOSE</span></p></td><td style="padding-top: 3px; padding-left: 3px; padding-bottom: 3px; padding-right: 3px; border-left: none; border-bottom: solid #dedfe7 0.5pt"><p><span style="font-family:Arial; font-size:10pt">If any of the tables or indexes in the statement are analyzed, use the Cost Based Optimizer otherwise use the Rule Based.</span></p></td></tr><tr><td style="padding-top: 3px; padding-left: 3px; padding-bottom: 3px; padding-right: 3px; border-bottom: solid #dedfe7 0.5pt; border-right: solid #dedfe7 0.5pt"><p><span style="font-family:Arial; font-size:10pt">RULE</span></p></td><td style="padding-top: 3px; padding-left: 3px; padding-bottom: 3px; padding-right: 3px; border-left: none; border-bottom: solid #dedfe7 0.5pt"><p><span style="font-family:Arial; font-size:10pt">Use the rule based optimizer for this statement.</span></p></td></tr><tr><td style="padding-top: 3px; padding-left: 3px; padding-bottom: 3px; padding-right: 3px; border-bottom: solid #dedfe7 0.5pt; border-right: solid #dedfe7 0.5pt"><p><span style="font-family:Arial; font-size:10pt">AND_EQUAL</span></p></td><td style="padding-top: 3px; padding-left: 3px; padding-bottom: 3px; padding-right: 3px; border-left: none; border-bottom: solid #dedfe7 0.5pt"><p><span style="font-family:Arial; font-size:10pt">Used to join single column indexes. You must specify at least 2 indexes.</span></p></td></tr><tr><td style="padding-top: 3px; padding-left: 3px; padding-bottom: 3px; padding-right: 3px; border-bottom: solid #dedfe7 0.5pt; border-right: solid #dedfe7 0.5pt"><p><span style="font-family:Arial; font-size:10pt">APPEND </span></p></td><td style="padding-top: 3px; padding-left: 3px; padding-bottom: 3px; padding-right: 3px; border-left: none; border-bottom: solid #dedfe7 0.5pt"><p><span style="font-family:Arial; font-size:10pt">INTO table…causes the data being inserted to be placed at the end of the table. It does not use free space in the earlier blocks of the table. This is new with Oracle8.</span></p></td></tr><tr><td style="padding-top: 3px; padding-left: 3px; padding-bottom: 3px; padding-right: 3px; border-bottom: solid #dedfe7 0.5pt; border-right: solid #dedfe7 0.5pt"><p><span style="font-family:Arial; font-size:10pt">CACHE </span></p></td><td style="padding-top: 3px; padding-left: 3px; padding-bottom: 3px; padding-right: 3px; border-left: none; border-bottom: solid #dedfe7 0.5pt"><p><span style="font-family:Arial; font-size:10pt">Places blocks read into the most recently used end of the buffer cache which will retain the data in the buffer cache longer.</span></p></td></tr><tr><td style="padding-top: 3px; padding-left: 3px; padding-bottom: 3px; padding-right: 3px; border-bottom: solid #dedfe7 0.5pt; border-right: solid #dedfe7 0.5pt"><p><span style="font-family:Arial; font-size:10pt">CLUSTER</span></p></td><td style="padding-top: 3px; padding-left: 3px; padding-bottom: 3px; padding-right: 3px; border-left: none; border-bottom: solid #dedfe7 0.5pt"><p><span style="font-family:Arial; font-size:10pt">Uses a cluster scan. Clusters store each child related to a parent in the same physical address.</span></p></td></tr><tr><td style="padding-top: 3px; padding-left: 3px; padding-bottom: 3px; padding-right: 3px; border-bottom: solid #dedfe7 0.5pt; border-right: solid #dedfe7 0.5pt"><p><span style="font-family:Arial; font-size:10pt">CURSOR_SHARING_EXACT</span></p></td><td style="padding-top: 3px; padding-left: 3px; padding-bottom: 3px; padding-right: 3px; border-left: none; border-bottom: solid #dedfe7 0.5pt"><p><span style="font-family:Arial; font-size:10pt">Disables cursor sharing if it is enabled.</span></p></td></tr><tr><td style="padding-top: 3px; padding-left: 3px; padding-bottom: 3px; padding-right: 3px; border-bottom: solid #dedfe7 0.5pt; border-right: solid #dedfe7 0.5pt"><p><span style="font-family:Arial; font-size:10pt">DRIVING_SITE</span></p></td><td style="padding-top: 3px; padding-left: 3px; padding-bottom: 3px; padding-right: 3px; border-left: none; border-bottom: solid #dedfe7 0.5pt"><p><span style="font-family:Arial; font-size:10pt">Forces query execution to be done at a different site.</span></p></td></tr><tr><td style="padding-top: 3px; padding-left: 3px; padding-bottom: 3px; padding-right: 3px; border-bottom: solid #dedfe7 0.5pt; border-right: solid #dedfe7 0.5pt"><p><span style="font-family:Arial; font-size:10pt">DYNAMIC_SAMPLING</span></p></td><td style="padding-top: 3px; padding-left: 3px; padding-bottom: 3px; padding-right: 3px; border-left: none; border-bottom: solid #dedfe7 0.5pt"><p><span style="font-family:Arial; font-size:10pt">Allows you to control dynamic sampling.</span></p></td></tr><tr><td style="padding-top: 3px; padding-left: 3px; padding-bottom: 3px; padding-right: 3px; border-bottom: solid #dedfe7 0.5pt; border-right: solid #dedfe7 0.5pt"><p><span style="font-family:Arial; font-size:10pt">EXPAND_GSET_TO_UNION</span></p></td><td style="padding-top: 3px; padding-left: 3px; padding-bottom: 3px; padding-right: 3px; border-left: none; border-bottom: solid #dedfe7 0.5pt"><p><span style="font-family:Arial; font-size:10pt">Used for queries containing grouping sets (such as queries with GROUP BY GROUPING SET or GROUP BY ROLLUP). The hint forces a query to be transformed into a corresponding query with UNION ALL of individual groupings.</span></p></td></tr><tr><td style="padding-top: 3px; padding-left: 3px; padding-bottom: 3px; padding-right: 3px; border-bottom: solid #dedfe7 0.5pt; border-right: solid #dedfe7 0.5pt"><p><span style="font-family:Arial; font-size:10pt">FACT</span></p></td><td style="padding-top: 3px; padding-left: 3px; padding-bottom: 3px; padding-right: 3px; border-left: none; border-bottom: solid #dedfe7 0.5pt"><p><span style="font-family:Arial; font-size:10pt">Denotes that the hinted table is a fact table when the transformation is a star transformation.</span></p></td></tr><tr><td style="padding-top: 3px; padding-left: 3px; padding-bottom: 3px; padding-right: 3px; border-bottom: solid #dedfe7 0.5pt; border-right: solid #dedfe7 0.5pt"><p><span style="font-family:Arial; font-size:10pt">FULL</span></p></td><td style="padding-top: 3px; padding-left: 3px; padding-bottom: 3px; padding-right: 3px; border-left: none; border-bottom: solid #dedfe7 0.5pt"><p><span style="font-family:Arial; font-size:10pt">Tells Oracle to perform a full table scan on the table, even if there is an index in place. If you have the degree of parallelism set, it may also cause the table to be read using parallel query processors.</span></p></td></tr><tr><td style="padding-top: 3px; padding-left: 3px; padding-bottom: 3px; padding-right: 3px; border-bottom: solid #dedfe7 0.5pt; border-right: solid #dedfe7 0.5pt"><p><span style="font-family:Arial; font-size:10pt">HASH</span></p></td><td style="padding-top: 3px; padding-left: 3px; padding-bottom: 3px; padding-right: 3px; border-left: none; border-bottom: solid #dedfe7 0.5pt"><p><span style="font-family:Arial; font-size:10pt">Uses a hash scan to access the specified table.</span></p></td></tr><tr><td style="padding-top: 3px; padding-left: 3px; padding-bottom: 3px; padding-right: 3px; border-bottom: solid #dedfe7 0.5pt; border-right: solid #dedfe7 0.5pt"><p><span style="font-family:Arial; font-size:10pt">HASH_AJ </span></p></td><td style="padding-top: 3px; padding-left: 3px; padding-bottom: 3px; padding-right: 3px; border-left: none; border-bottom: solid #dedfe7 0.5pt"><p><span style="font-family:Arial; font-size:10pt">Uses a hash anti-join to speed up NOT IN.</span></p></td></tr><tr><td style="padding-top: 3px; padding-left: 3px; padding-bottom: 3px; padding-right: 3px; border-bottom: solid #dedfe7 0.5pt; border-right: solid #dedfe7 0.5pt"><p><span style="font-family:Arial; font-size:10pt">HASH_SJ</span></p></td><td style="padding-top: 3px; padding-left: 3px; padding-bottom: 3px; padding-right: 3px; border-left: none; border-bottom: solid #dedfe7 0.5pt"><p><span style="font-family:Arial; font-size:10pt">Uses a hash semi-join to speed up EXISTS. </span></p></td></tr><tr><td style="padding-top: 3px; padding-left: 3px; padding-bottom: 3px; padding-right: 3px; border-bottom: solid #dedfe7 0.5pt; border-right: solid #dedfe7 0.5pt"><p><span style="font-family:Arial; font-size:10pt">INDEX</span></p></td><td style="padding-top: 3px; padding-left: 3px; padding-bottom: 3px; padding-right: 3px; border-left: none; border-bottom: solid #dedfe7 0.5pt"><p><span style="font-family:Arial; font-size:10pt">Informs the optimizer to use a specific index on the specified table. </span></p></td></tr><tr><td style="padding-top: 3px; padding-left: 3px; padding-bottom: 3px; padding-right: 3px; border-bottom: solid #dedfe7 0.5pt; border-right: solid #dedfe7 0.5pt"><p><span style="font-family:Arial; font-size:10pt">INDEX_ASC</span></p></td><td style="padding-top: 3px; padding-left: 3px; padding-bottom: 3px; padding-right: 3px; border-left: none; border-bottom: solid #dedfe7 0.5pt"><p><span style="font-family:Arial; font-size:10pt">Informs the optimizer to use a specific index on the specified table.</span></p></td></tr><tr><td style="padding-top: 3px; padding-left: 3px; padding-bottom: 3px; padding-right: 3px; border-bottom: solid #dedfe7 0.5pt; border-right: solid #dedfe7 0.5pt"><p><span style="font-family:Arial; font-size:10pt">INDEX_COMBINE</span></p></td><td style="padding-top: 3px; padding-left: 3px; padding-bottom: 3px; padding-right: 3px; border-left: none; border-bottom: solid #dedfe7 0.5pt"><p><span style="font-family:Arial; font-size:10pt">Informs the optimizer to use a specific index on the specified table. Used for bitmap indexes.</span></p></td></tr><tr><td style="padding-top: 3px; padding-left: 3px; padding-bottom: 3px; padding-right: 3px; border-bottom: solid #dedfe7 0.5pt; border-right: solid #dedfe7 0.5pt"><p><span style="font-family:Arial; font-size:10pt">INDEX_DESC</span></p></td><td style="padding-top: 3px; padding-left: 3px; padding-bottom: 3px; padding-right: 3px; border-left: none; border-bottom: solid #dedfe7 0.5pt"><p><span style="font-family:Arial; font-size:10pt">Informs the optimizer to use a specific index on the specified table.</span></p></td></tr><tr><td style="padding-top: 3px; padding-left: 3px; padding-bottom: 3px; padding-right: 3px; border-bottom: solid #dedfe7 0.5pt; border-right: solid #dedfe7 0.5pt"><p><span style="font-family:Arial; font-size:10pt">INDEX_FFS</span></p></td><td style="padding-top: 3px; padding-left: 3px; padding-bottom: 3px; padding-right: 3px; border-left: none; border-bottom: solid #dedfe7 0.5pt"><p><span style="font-family:Arial; font-size:10pt">Informs the optimizer to perform a fast full index scan instead of a full table scan. It is faster than a normal index scan.</span></p></td></tr><tr><td style="padding-top: 3px; padding-left: 3px; padding-bottom: 3px; padding-right: 3px; border-bottom: solid #dedfe7 0.5pt; border-right: solid #dedfe7 0.5pt"><p><span style="font-family:Arial; font-size:10pt">INDEX_JOIN</span></p></td><td style="padding-top: 3px; padding-left: 3px; padding-bottom: 3px; padding-right: 3px; border-left: none; border-bottom: solid #dedfe7 0.5pt"><p><span style="font-family:Arial; font-size:10pt">Informs the optimizer to use an index join as the access path.</span></p></td></tr><tr><td style="padding-top: 3px; padding-left: 3px; padding-bottom: 3px; padding-right: 3px; border-bottom: solid #dedfe7 0.5pt; border-right: solid #dedfe7 0.5pt"><p><span style="font-family:Arial; font-size:10pt">LEADING</span></p></td><td style="padding-top: 3px; padding-left: 3px; padding-bottom: 3px; padding-right: 3px; border-left: none; border-bottom: solid #dedfe7 0.5pt"><p><span style="font-family:Arial; font-size:10pt">The LEADING hint causes Oracle to use the specified table as the first table in the join order. An ORDERED hint will override this hint.</span></p></td></tr><tr><td style="padding-top: 3px; padding-left: 3px; padding-bottom: 3px; padding-right: 3px; border-bottom: solid #dedfe7 0.5pt; border-right: solid #dedfe7 0.5pt"><p><span style="font-family:Arial; font-size:10pt">MERGE</span></p></td><td style="padding-top: 3px; padding-left: 3px; padding-bottom: 3px; padding-right: 3px; border-left: none; border-bottom: solid #dedfe7 0.5pt"><p><span style="font-family:Arial; font-size:10pt">Merge a view on a per-query basis.</span></p></td></tr><tr><td style="padding-top: 3px; padding-left: 3px; padding-bottom: 3px; padding-right: 3px; border-bottom: solid #dedfe7 0.5pt; border-right: solid #dedfe7 0.5pt"><p><span style="font-family:Arial; font-size:10pt">MERGE_AJ </span></p></td><td style="padding-top: 3px; padding-left: 3px; padding-bottom: 3px; padding-right: 3px; border-left: none; border-bottom: solid #dedfe7 0.5pt"><p><span style="font-family:Arial; font-size:10pt">Causes NOT IN to be processed using a Merge Join. It is often significantly faster than standard NOT processing.</span></p></td></tr><tr><td style="padding-top: 3px; padding-left: 3px; padding-bottom: 3px; padding-right: 3px; border-bottom: solid #dedfe7 0.5pt; border-right: solid #dedfe7 0.5pt"><p><span style="font-family:Arial; font-size:10pt">MERGE_SJ</span></p></td><td style="padding-top: 3px; padding-left: 3px; padding-bottom: 3px; padding-right: 3px; border-left: none; border-bottom: solid #dedfe7 0.5pt"><p><span style="font-family:Arial; font-size:10pt">Transforms a correlated EXISTS subquery into a merge semi-join to access the specified table.</span></p></td></tr><tr><td style="padding-top: 3px; padding-left: 3px; padding-bottom: 3px; padding-right: 3px; border-bottom: solid #dedfe7 0.5pt; border-right: solid #dedfe7 0.5pt"><p><span style="font-family:Arial; font-size:10pt">NOAPPEND</span></p></td><td style="padding-top: 3px; padding-left: 3px; padding-bottom: 3px; padding-right: 3px; border-left: none; border-bottom: solid #dedfe7 0.5pt"><p><span style="font-family:Arial; font-size:10pt">INTO table…overrides APPEND, which is used by default with parallel inserts.</span></p></td></tr><tr><td style="padding-top: 3px; padding-left: 3px; padding-bottom: 3px; padding-right: 3px; border-bottom: solid #dedfe7 0.5pt; border-right: solid #dedfe7 0.5pt"><p><span style="font-family:Arial; font-size:10pt">NOCACHE</span></p></td><td style="padding-top: 3px; padding-left: 3px; padding-bottom: 3px; padding-right: 3px; border-left: none; border-bottom: solid #dedfe7 0.5pt"><p><span style="font-family:Arial; font-size:10pt">Places the data into the least recently used end of the buffer cache, which is standard behavior. It also overrides the CACHE setting on a table.</span></p></td></tr><tr><td style="padding-top: 3px; padding-left: 3px; padding-bottom: 3px; padding-right: 3px; border-bottom: solid #dedfe7 0.5pt; border-right: solid #dedfe7 0.5pt"><p><span style="font-family:Arial; font-size:10pt">NO_EXPAND</span></p></td><td style="padding-top: 3px; padding-left: 3px; padding-bottom: 3px; padding-right: 3px; border-left: none; border-bottom: solid #dedfe7 0.5pt"><p><span style="font-family:Arial; font-size:10pt">Prevents the cost-based optimizer from considering OR-expansion for queries having OR conditions or INLISTS in the WHERE clause.</span></p></td></tr><tr><td style="padding-top: 3px; padding-left: 3px; padding-bottom: 3px; padding-right: 3px; border-bottom: solid #dedfe7 0.5pt; border-right: solid #dedfe7 0.5pt"><p><span style="font-family:Arial; font-size:10pt">NO_FACT </span></p></td><td style="padding-top: 3px; padding-left: 3px; padding-bottom: 3px; padding-right: 3px; border-left: none; border-bottom: solid #dedfe7 0.5pt"><p><span style="font-family:Arial; font-size:10pt">Denotes that the hinted table is not a fact table when the transformation is a star transformation.</span></p></td></tr><tr><td style="padding-top: 3px; padding-left: 3px; padding-bottom: 3px; padding-right: 3px; border-bottom: solid #dedfe7 0.5pt; border-right: solid #dedfe7 0.5pt"><p><span style="font-family:Arial; font-size:10pt">NO_INDEX </span></p></td><td style="padding-top: 3px; padding-left: 3px; padding-bottom: 3px; padding-right: 3px; border-left: none; border-bottom: solid #dedfe7 0.5pt"><p><span style="font-family:Arial; font-size:10pt">Explicitly disallows a set of indexes for the specified table.</span></p></td></tr><tr><td style="padding-top: 3px; padding-left: 3px; padding-bottom: 3px; padding-right: 3px; border-bottom: solid #dedfe7 0.5pt; border-right: solid #dedfe7 0.5pt"><p><span style="font-family:Arial; font-size:10pt">NO_MERGE</span></p></td><td style="padding-top: 3px; padding-left: 3px; padding-bottom: 3px; padding-right: 3px; border-left: none; border-bottom: solid #dedfe7 0.5pt"><p><span style="font-family:Arial; font-size:10pt">Causes Oracle not to merge views specified in the FROM clause.</span></p></td></tr><tr><td style="padding-top: 3px; padding-left: 3px; padding-bottom: 3px; padding-right: 3px; border-bottom: solid #dedfe7 0.5pt; border-right: solid #dedfe7 0.5pt"><p><span style="font-family:Arial; font-size:10pt">NO_PUSH_PRED</span></p></td><td style="padding-top: 3px; padding-left: 3px; padding-bottom: 3px; padding-right: 3px; border-left: none; border-bottom: solid #dedfe7 0.5pt"><p><span style="font-family:Arial; font-size:10pt">Prevents a join predicate from being pushed into the view.</span></p></td></tr><tr><td style="padding-top: 3px; padding-left: 3px; padding-bottom: 3px; padding-right: 3px; border-bottom: solid #dedfe7 0.5pt; border-right: solid #dedfe7 0.5pt"><p><span style="font-family:Arial; font-size:10pt">NO_PUSH_SUBQ</span></p></td><td style="padding-top: 3px; padding-left: 3px; padding-bottom: 3px; padding-right: 3px; border-left: none; border-bottom: solid #dedfe7 0.5pt"><p><span style="font-family:Arial; font-size:10pt">Delays evaluation of non-merged subqueries until the last step in the execution plan. </span></p></td></tr><tr><td style="padding-top: 3px; padding-left: 3px; padding-bottom: 3px; padding-right: 3px; border-bottom: solid #dedfe7 0.5pt; border-right: solid #dedfe7 0.5pt"><p><span style="font-family:Arial; font-size:10pt">NOPARALLEL </span></p></td><td style="padding-top: 3px; padding-left: 3px; padding-bottom: 3px; padding-right: 3px; border-left: none; border-bottom: solid #dedfe7 0.5pt"><p><span style="font-family:Arial; font-size:10pt">Overrides the degree of parallelism against a table to run in non parallel mode.</span></p></td></tr><tr><td style="padding-top: 3px; padding-left: 3px; padding-bottom: 3px; padding-right: 3px; border-bottom: solid #dedfe7 0.5pt; border-right: solid #dedfe7 0.5pt"><p><span style="font-family:Arial; font-size:10pt">NOPARALLEL_INDEX</span></p></td><td style="padding-top: 3px; padding-left: 3px; padding-bottom: 3px; padding-right: 3px; border-left: none; border-bottom: solid #dedfe7 0.5pt"><p><span style="font-family:Arial; font-size:10pt">Overrides a PARALLEL attribute setting on an index.</span></p></td></tr><tr><td style="padding-top: 3px; padding-left: 3px; padding-bottom: 3px; padding-right: 3px; border-bottom: solid #dedfe7 0.5pt; border-right: solid #dedfe7 0.5pt"><p><span style="font-family:Arial; font-size:10pt">NO_PUSH_JOIN_PRED </span></p></td><td style="padding-top: 3px; padding-left: 3px; padding-bottom: 3px; padding-right: 3px; border-left: none; border-bottom: solid #dedfe7 0.5pt"><p><span style="font-family:Arial; font-size:10pt">Prevents pushing a join predicate into the view.</span></p></td></tr><tr><td style="padding-top: 3px; padding-left: 3px; padding-bottom: 3px; padding-right: 3px; border-bottom: solid #dedfe7 0.5pt; border-right: solid #dedfe7 0.5pt"><p><span style="font-family:Arial; font-size:10pt">NO_UNNEST</span></p></td><td style="padding-top: 3px; padding-left: 3px; padding-bottom: 3px; padding-right: 3px; border-left: none; border-bottom: solid #dedfe7 0.5pt"><p><span style="font-family:Arial; font-size:10pt">Prevents unnesting for specific subquery blocks.</span></p></td></tr><tr><td style="padding-top: 3px; padding-left: 3px; padding-bottom: 3px; padding-right: 3px; border-bottom: solid #dedfe7 0.5pt; border-right: solid #dedfe7 0.5pt"><p><span style="font-family:Arial; font-size:10pt">NOREWRITE</span></p></td><td style="padding-top: 3px; padding-left: 3px; padding-bottom: 3px; padding-right: 3px; border-left: none; border-bottom: solid #dedfe7 0.5pt"><p><span style="font-family:Arial; font-size:10pt">Disables query rewrite for the query block.</span></p></td></tr><tr><td style="padding-top: 3px; padding-left: 3px; padding-bottom: 3px; padding-right: 3px; border-bottom: solid #dedfe7 0.5pt; border-right: solid #dedfe7 0.5pt"><p><span style="font-family:Arial; font-size:10pt">ORDERED</span></p></td><td style="padding-top: 3px; padding-left: 3px; padding-bottom: 3px; padding-right: 3px; border-left: none; border-bottom: solid #dedfe7 0.5pt"><p><span style="font-family:Arial; font-size:10pt">Causes the SQL to be driven by the tables in the order left to right.</span></p></td></tr><tr><td style="padding-top: 3px; padding-left: 3px; padding-bottom: 3px; padding-right: 3px; border-bottom: solid #dedfe7 0.5pt; border-right: solid #dedfe7 0.5pt"><p><span style="font-family:Arial; font-size:10pt">ORDERED_PREDICATES</span></p></td><td style="padding-top: 3px; padding-left: 3px; padding-bottom: 3px; padding-right: 3px; border-left: none; border-bottom: solid #dedfe7 0.5pt"><p><span style="font-family:Arial; font-size:10pt">Causes the order of predicate evaluation to be preserved by the optimizer.</span></p></td></tr><tr><td style="padding-top: 3px; padding-left: 3px; padding-bottom: 3px; padding-right: 3px; border-bottom: solid #dedfe7 0.5pt; border-right: solid #dedfe7 0.5pt"><p><span style="font-family:Arial; font-size:10pt">PARALLEL</span></p></td><td style="padding-top: 3px; padding-left: 3px; padding-bottom: 3px; padding-right: 3px; border-left: none; border-bottom: solid #dedfe7 0.5pt"><p><span style="font-family:Arial; font-size:10pt">Sets the number of parallel processors to scan a table.</span></p></td></tr><tr><td style="padding-top: 3px; padding-left: 3px; padding-bottom: 3px; padding-right: 3px; border-bottom: solid #dedfe7 0.5pt; border-right: solid #dedfe7 0.5pt"><p><span style="font-family:Arial; font-size:10pt">PARALLEL_INDEX </span></p></td><td style="padding-top: 3px; padding-left: 3px; padding-bottom: 3px; padding-right: 3px; border-left: none; border-bottom: solid #dedfe7 0.5pt"><p><span style="font-family:Arial; font-size:10pt">Will use parallel query processes for fast full index scans for indexes which have PARALLEL set.</span></p></td></tr><tr><td style="padding-top: 3px; padding-left: 3px; padding-bottom: 3px; padding-right: 3px; border-bottom: solid #dedfe7 0.5pt; border-right: solid #dedfe7 0.5pt"><p><span style="font-family:Arial; font-size:10pt">PQ_DISTRIBUTE</span></p></td><td style="padding-top: 3px; padding-left: 3px; padding-bottom: 3px; padding-right: 3px; border-left: none; border-bottom: solid #dedfe7 0.5pt"><p><span style="font-family:Arial; font-size:10pt">Improves parallel join operations.</span></p></td></tr><tr><td style="padding-top: 3px; padding-left: 3px; padding-bottom: 3px; padding-right: 3px; border-bottom: solid #dedfe7 0.5pt; border-right: solid #dedfe7 0.5pt"><p><span style="font-family:Arial; font-size:10pt">PUSH_JOIN_PRED</span></p></td><td style="padding-top: 3px; padding-left: 3px; padding-bottom: 3px; padding-right: 3px; border-left: none; border-bottom: solid #dedfe7 0.5pt"><p><span style="font-family:Arial; font-size:10pt">Forces pushing a join predicate into the view.</span></p></td></tr><tr><td style="padding-top: 3px; padding-left: 3px; padding-bottom: 3px; padding-right: 3px; border-bottom: solid #dedfe7 0.5pt; border-right: solid #dedfe7 0.5pt"><p><span style="font-family:Arial; font-size:10pt">PUSH_PRED</span></p></td><td style="padding-top: 3px; padding-left: 3px; padding-bottom: 3px; padding-right: 3px; border-left: none; border-bottom: solid #dedfe7 0.5pt"><p><span style="font-family:Arial; font-size:10pt">Forces a join predicate to be pushed into the view.</span></p></td></tr><tr><td style="padding-top: 3px; padding-left: 3px; padding-bottom: 3px; padding-right: 3px; border-bottom: solid #dedfe7 0.5pt; border-right: solid #dedfe7 0.5pt"><p><span style="font-family:Arial; font-size:10pt">PUSH_SUBQ</span></p></td><td style="padding-top: 3px; padding-left: 3px; padding-bottom: 3px; padding-right: 3px; border-left: none; border-bottom: solid #dedfe7 0.5pt"><p><span style="font-family:Arial; font-size:10pt">Place this hint in a non merged subquery if the subquery performs little processing.</span></p></td></tr><tr><td style="padding-top: 3px; padding-left: 3px; padding-bottom: 3px; padding-right: 3px; border-bottom: solid #dedfe7 0.5pt; border-right: solid #dedfe7 0.5pt"><p><span style="font-family:Arial; font-size:10pt">REWRITE</span></p></td><td style="padding-top: 3px; padding-left: 3px; padding-bottom: 3px; padding-right: 3px; border-left: none; border-bottom: solid #dedfe7 0.5pt"><p><span style="font-family:Arial; font-size:10pt">Use with or without a view list to select the materialized view to be used.</span></p></td></tr><tr><td style="padding-top: 3px; padding-left: 3px; padding-bottom: 3px; padding-right: 3px; border-bottom: solid #dedfe7 0.5pt; border-right: solid #dedfe7 0.5pt"><p><span style="font-family:Arial; font-size:10pt">ROWID</span></p></td><td style="padding-top: 3px; padding-left: 3px; padding-bottom: 3px; padding-right: 3px; border-left: none; border-bottom: solid #dedfe7 0.5pt"><p><span style="font-family:Arial; font-size:10pt">Uses a table scan by rowid.</span></p></td></tr><tr><td style="padding-top: 3px; padding-left: 3px; padding-bottom: 3px; padding-right: 3px; border-bottom: solid #dedfe7 0.5pt; border-right: solid #dedfe7 0.5pt"><p><span style="font-family:Arial; font-size:10pt">STAR</span></p></td><td style="padding-top: 3px; padding-left: 3px; padding-bottom: 3px; padding-right: 3px; border-left: none; border-bottom: solid #dedfe7 0.5pt"><p><span style="font-family:Arial; font-size:10pt">Causes Oracle to merge the reference tables together and join them to the central table using a nested loop</span></p></td></tr><tr><td style="padding-top: 3px; padding-left: 3px; padding-bottom: 3px; padding-right: 3px; border-bottom: solid #dedfe7 0.5pt; border-right: solid #dedfe7 0.5pt"><p><span style="font-family:Arial; font-size:10pt">STAR_TRANSFORMATION</span></p></td><td style="padding-top: 3px; padding-left: 3px; padding-bottom: 3px; padding-right: 3px; border-left: none; border-bottom: solid #dedfe7 0.5pt"><p><span style="font-family:Arial; font-size:10pt">Causes Oracle to use a star query. It does not always use cartesian product of the reference tables, unlike the STAR hint.</span></p></td></tr><tr><td style="padding-top: 3px; padding-left: 3px; padding-bottom: 3px; padding-right: 3px; border-bottom: solid #dedfe7 0.5pt; border-right: solid #dedfe7 0.5pt"><p><span style="font-family:Arial; font-size:10pt">UNNEST</span></p></td><td style="padding-top: 3px; padding-left: 3px; padding-bottom: 3px; padding-right: 3px; border-left: none; border-bottom: solid #dedfe7 0.5pt"><p><span style="font-family:Arial; font-size:10pt">Merges nested subqueries into the body of the statement that contains them. The optimizr then considers them together as it evaluates access paths and joins.</span></p></td></tr><tr><td style="padding-top: 3px; padding-left: 3px; padding-bottom: 3px; padding-right: 3px; border-bottom: solid #dedfe7 0.5pt; border-right: solid #dedfe7 0.5pt"><p><span style="font-family:Arial; font-size:10pt">USE_CONCAT</span></p></td><td style="padding-top: 3px; padding-left: 3px; padding-bottom: 3px; padding-right: 3px; border-left: none; border-bottom: solid #dedfe7 0.5pt"><p><span style="font-family:Arial; font-size:10pt">Causes all ORs in the statement to be transferred to UNION ALLs.</span></p></td></tr><tr><td style="padding-top: 3px; padding-left: 3px; padding-bottom: 3px; padding-right: 3px; border-bottom: solid #dedfe7 0.5pt; border-right: solid #dedfe7 0.5pt"><p><span style="font-family:Arial; font-size:10pt">USE_HASH</span></p></td><td style="padding-top: 3px; padding-left: 3px; padding-bottom: 3px; padding-right: 3px; border-left: none; border-bottom: solid #dedfe7 0.5pt"><p><span style="font-family:Arial; font-size:10pt">Tables are joined to the row resulting from using a hash join.</span></p></td></tr><tr><td style="padding-top: 3px; padding-left: 3px; padding-bottom: 3px; padding-right: 3px; border-bottom: solid #dedfe7 0.5pt; border-right: solid #dedfe7 0.5pt"><p><span style="font-family:Arial; font-size:10pt">USE_NL</span></p></td><td style="padding-top: 3px; padding-left: 3px; padding-bottom: 3px; padding-right: 3px; border-left: none; border-bottom: solid #dedfe7 0.5pt"><p><span style="font-family:Arial; font-size:10pt">Selects a row from one row and then returns the associated row from another table using an index. Use for OLTP.</span></p></td></tr><tr><td style="padding-top: 3px; padding-left: 3px; padding-bottom: 3px; padding-right: 3px; border-bottom: solid #dedfe7 0.5pt; border-right: solid #dedfe7 0.5pt"><p><span style="font-family:Arial; font-size:10pt">USE_MERGE</span></p></td><td style="padding-top: 3px; padding-left: 3px; padding-bottom: 3px; padding-right: 3px; border-left: none; border-bottom: solid #dedfe7 0.5pt"><p><span style="font-family:Arial; font-size:10pt">Will sort each table and merge the rows together. Use for batch processing.</span></p></td></tr></tbody></table></div><p style="text-align: justify"><br /></p><p style="text-align: justify"><span style="color:black"><span style="font-family:Arial; font-size:10pt">RULE, CHOOSE, ALL_ROWS and FIRST_ROWS can be applied at the instance level using the INIT.ora OPTIMIZER_MODE parameter. If set in the INIT.ora, the setting will apply for all SQL statements. The INIT.ora is usually the preferred method to apply the hints unless one particular statement ran well under the Rule Based and is performing unacceptably using the Cost Based.</span><span style="font-family:Tahoma; font-size:7pt"><br /> </span></span></p><p style="text-align: justify"><span style="color:black"><span style="font-family:Arial; font-size:10pt">The CHOOSE and RULE HINTS specify whether the CBO or the RBO should be used. Correctly specified HINTS will override the optimizer mode specified. If an optimization approach is specified, that approach will be used regardless of the initialization parameter setting for OPTIMIZER_MODE or the session setting for OPTIMIZER_GOAL. Even if statistics are present for one table and the HINT specifies CHOOSE, the optimizer will use the CBO. If no statistics are available, the optimizer will use the RBO. The use of the RULE HINT will cause the optimizer to ignore any other HINTS specified.</span><span style="font-family:Tahoma; font-size:7pt"><br /> </span></span></p><p style="text-align: justify"><span style="color:black"><span style="font-family:Arial; font-size:10pt">Both the ALL_ROWS and the FIRST_ROWS use the CBO. If no statistics are available, the optimizer will use whatever storage information is available. The ANALYZE command should be used to provide statistics before using either the ALL_ROWS or the FIRST_ROWS HINT. If a HINT specifying an access path or join operation is also specified, it will be given precedence over the ALL_ROWS and FIRST_ROWS HINTS.</span><span style="font-family:Tahoma; font-size:7pt"><br /> </span></span></p><p style="text-align: justify"><span style="color:black"><span style="font-family:Arial; font-size:10pt">The ALL_ROWS HINT concentrates on the best throughput with the minimum total resource consumption. FIRST_ROWS optimizes with the goal of the best response time with the minimum resource usage necessary to return the first row. The FIRST_ROWS HINT will be ignored for DELETE and UPDATE statements. </span><span style="font-family:Tahoma; font-size:7pt"><br /> </span></span></p><p style="text-align: justify"><span style="color:black"><span style="font-family:Arial; font-size:10pt">If the described access method requires an index that does not exist, the HINT will be ignored. The table must be specified in the HINT the same as it is in the SQL statement. If an alias is used for the table, the table specified in the HINT must use the table alias instead of the table name. You cannot use the schema name for the table, even if the table is fully qualified in the FROM clause.</span><span style="font-family:Tahoma; font-size:7pt"><br /> </span></span></p><p style="text-align: justify"><span style="color:black"><span style="font-family:Arial; font-size:10pt"><br /></span></span></p><p style="text-align: justify"><span style="color:black"><span style="font-family:Arial; font-size:10pt">Source:</span></span></p><p style="text-align: justify"><span style="color:black"><span style="font-family:Arial; font-size:10pt"><a href="http://www.toadworld.com/KNOWLEDGE/KnowledgeXpertforOracle/tabid/648/TopicID/HNTS/Default.aspx">http://www.toadworld.com/KNOWLEDGE/KnowledgeXpertforOracle/tabid/648/TopicID/HNTS/Default.aspx</a></span></span></p></span>Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-9156846351847927902.post-42188828424447622802010-11-07T07:46:00.001-08:002010-11-07T08:10:27.138-08:00Oracle SQL Hints<span xmlns=""><p><span> </span><span style="text-decoration: underline; "><span class="Apple-style-span" style="font-size: medium;">ORACLE SQL <strong><em>HINTS</em></strong></span></span></p><p><span class="Apple-style-span" style="font-size: medium;"><br /></span></p><p><span style="color: black; font-family: 'Trebuchet MS'; "><span class="Apple-style-span" style="font-size: medium;">Optimizer - SQL Hints<br /></span></span></p><p><span style="color: black; font-family: Tahoma; "><span class="Apple-style-span" style="font-size: medium;">Sometimes, the optimizer needs some suggestions in order to make the best possible choice, even when armed with good statistics. These suggestions can be given to the optimizer in the form of hints in your SQL statements. While hints give direction to the optimizer, the optimizer is under no obligation to follow them every time.<br /></span></span></p><p><span class="Apple-style-span" style="font-size: medium;"><br /></span></p><p><span style="color: black; font-family: Tahoma; "><span class="Apple-style-span" style="font-size: medium;">Hints are specified by enclosing the hint in a comment in the query. Multiple hints can be contained in the comment. The comment must follow the SELECT, INSERT, UPDATE, or DELETE keyword and must contain a plus sign, '+' at the start. If the hint is not specified properly, then it will be ignored with no errors or warnings from the optimizer. A hint is specified as follows:<br /></span></span></p><p><span style="color: black; font-family: 'Lucida Console'; "><span class="Apple-style-span" style="font-size: medium;">SELECT /*+ hint [text] [hint [text]] … */ ….<br /></span></span></p><p><span style="color: black; font-family: Tahoma; "><span class="Apple-style-span" style="font-size: medium;">Or<br /></span></span></p><p><span style="color:black"><span class="Apple-style-span" style="font-size: medium;">/*+ hint */<br /></span></span></p><p><span style="color:black"><span class="Apple-style-span" style="font-size: medium;">/*+ hint(argument) */<br /></span></span></p><p><span style="color:black"><span class="Apple-style-span" style="font-size: medium;">/*+ hint(argument-1 argument-2) */<br /></span></span></p><p><span class="Apple-style-span" style="font-size: medium;"><br /></span></p><p><span style="color: black; font-family: Tahoma; "><span class="Apple-style-span" style="font-size: medium;">An example of a hint is as follows:<br /></span></span></p><p><span style="color: black; font-family: 'Lucida Console'; "><span class="Apple-style-span" style="font-size: medium;">SELECT /*+ INDEX( e emp_pk) */<br /></span></span></p><p><span style="color: black; font-family: 'Lucida Console'; "><span class="Apple-style-span" style="font-size: medium;">FROM emp e<br /></span></span></p><p><span style="color: black; font-family: 'Lucida Console'; "><span class="Apple-style-span" style="font-size: medium;">WHERE empid IN (1001, 1002);<br /></span></span></p><p><span style="color: black; font-family: Tahoma; "><span class="Apple-style-span" style="font-size: medium;">In the above example, the INDEX hint is used to suggest a specific index to the optimizer. Normally, a table name is denoted to define which table to use that index, but in this example the table was aliased in the FROM clause, therefore the hint must use the table's alias. If the table was aliased in the FROM clause, and the table name was used in the hint, the hint would be ignored.<br /></span></span></p><p><span class="Apple-style-span" style="font-size: medium;"><br /></span></p><p><span style="color:black"><span style="font-family: Verdana; "><span class="Apple-style-span" style="font-size: medium;">All hints except </span></span><span style="font-family: 'Courier New'; "><span class="Apple-style-span" style="font-size: medium;">/*+ rule */</span></span><span style="font-family: Verdana; "><span class="Apple-style-span" style="font-size: medium;"> cause the </span></span></span><span style="font-family: Verdana; "><span style="color:#553333; text-decoration:underline"><span class="Apple-style-span" style="font-size: medium;">CBO</span></span><span style="color:black"><span class="Apple-style-span" style="font-size: medium;"> to be used. Therefore, it is good practice to analyze the underlying tables if hints are used (or the query is <em>fully</em> hinted.<br /></span></span></span></p><p><span style="color: black; font-family: Verdana; "><span class="Apple-style-span" style="font-size: medium;">There should be no schema names in hints. Hints must use aliases if alias names are used for table names. So the following is wrong:<br /></span></span></p><p><span style="font-family: 'Courier New'; "><span style="color:#10205f"><span class="Apple-style-span" style="font-size: medium;">select /*+ index(scott.emp ix_emp) */ from scott.emp </span></span><span style="color:black"><strong><span class="Apple-style-span" style="font-size: medium;">emp_alias</span></strong></span><span style="color:#10205f"><span class="Apple-style-span" style="font-size: medium;"><br /> </span></span></span></p><p><span style="color: black; font-family: Verdana; "><span class="Apple-style-span" style="font-size: medium;">better:<br /></span></span></p><p><span style="font-family: 'Courier New'; "><span style="color:#10205f"><span class="Apple-style-span" style="font-size: medium;">select /*+ index(</span></span><span style="color:black"><strong><span class="Apple-style-span" style="font-size: medium;">emp_alias</span></strong></span><span style="color:#10205f"><span class="Apple-style-span" style="font-size: medium;"> ix_emp) */ ... from scott.emp </span></span><span style="color:black"><strong><span class="Apple-style-span" style="font-size: medium;">emp_alias</span></strong></span><span style="color:#10205f"><span class="Apple-style-span" style="font-size: medium;"><br /> </span></span></span></p><p><span class="Apple-style-span" style="font-size: medium;"><br /></span></p><p><span style="color: black; font-family: 'Trebuchet MS'; "><span class="Apple-style-span"><b><span class="Apple-style-span" style="font-size: x-large;">Why to Use Hints</span></b><br /></span></span></p><p><span style="font-family: Verdana; "><span style="color:black"><span class="Apple-style-span" style="font-size: medium;">It is a perfect valid question to ask why hints should be used. Oracle comes with an </span></span></span><span style="color:#553333; text-decoration:underline"><span class="Apple-style-span" style="font-size: medium;">optimizer</span></span><span style="color:black"><span class="Apple-style-span" style="font-size: medium;"> that promises to optimize a</span></span><span style="color:#553333; text-decoration:underline"><span class="Apple-style-span" style="font-size: medium;">query's execution plan</span></span><span style="color:black"><span class="Apple-style-span" style="font-size: medium;">. When this optimizer is really doing a good job, no hints should be required at all.<br /></span></span></p><p><span style="color: black; font-family: Verdana; "><span class="Apple-style-span" style="font-size: medium;">Sometimes, however, the characteristics of the data in the database are changing rapidly, so that the optimizer (or more accuratly, its statistics) are out of date. In this case, a hint could help.<br /></span></span></p><p><span style="color: black; font-family: Verdana; "><span class="Apple-style-span" style="font-size: medium;">It must also be noted, that Oracle allows to <em>lock</em> the statistics when they look ideal which should make the hints meaningless again.<br /></span></span></p><p><span style="color: rgb(66, 116, 194); font-family: 'Courier New'; "><span class="Apple-style-span"><span class="Apple-style-span" style="font-size: x-large; ">Hint categories</span><br /></span></span></p><p><span style="color: black; font-family: Verdana; "><span class="Apple-style-span" style="font-size: medium;">Hints can be categorized as follows:<br /></span></span></p><p></p><ol><li><span style="color: black; font-family: Verdana; "><span class="Apple-style-span" style="font-size: medium;">Hints for Optimization Approaches and Goals,</span></span></li><li><span style="color: black; font-family: Verdana; "><span class="Apple-style-span" style="font-size: medium;">Hints for Access Paths, Hints for Query Transformations,</span></span></li><li><span style="color: black; font-family: Verdana; "><span class="Apple-style-span" style="font-size: medium;">Hints for Join Orders,</span></span></li><li><span style="color: black; font-family: Verdana; "><span class="Apple-style-span" style="font-size: medium;">Hints for Join Operations,</span></span></li><li><span style="color: black; font-family: Verdana; "><span class="Apple-style-span" style="font-size: medium;">Hints for Parallel Execution,</span></span></li><li><span style="color:black"><span><span class="Apple-style-span" style="font-size: medium; "><span class="Apple-style-span">Miscellaneous</span><span class="Apple-style-span"> </span></span></span><span style="font-family: Verdana; "><span class="Apple-style-span" style="font-size: medium;">Hints</span></span></span></li></ol><p></p><p><span style="color: black; font-family: 'Trebuchet MS'; "><br /></span></p><p><span style="color: black; font-family: 'Trebuchet MS'; "><span class="Apple-style-span"><span class="Apple-style-span" style="font-size: medium;">1. </span><span class="Apple-style-span" style="font-size: large;"><i>Optimizer Mode Hints</i></span><br /></span></span></p><p><span style="color: black; font-family: Tahoma; "><span class="Apple-style-span" style="font-size: medium;">The optimizer mode for the SQL statement can be specified as a hint. This overrides the instance and session settings for the optimizer mode. The optimizer hints are as follows:<br /></span></span></p><p><span style="color: black; font-family: Tahoma; "><span class="Apple-style-span" style="font-size: medium;">ALL_ROWS<br /></span></span></p><p></p><ul><li><span style="color:black"><span style="font-family: Tahoma; "><span class="Apple-style-span" style="font-size: medium;">return all rows as fast as possible</span></span></span></li><li><span style="font-family: Verdana; "><span style="color:black"><span class="Apple-style-span" style="font-size: medium;">One of the hints that 'invokes' the </span></span></span><span style="color:#553333; text-decoration:underline"><span class="Apple-style-span" style="font-size: medium;">Cost based optimizer</span></span></li><li><span style="color:black"><span style="font-family: Verdana; "><span class="Apple-style-span" style="font-size: medium;">ALL_ROWS is usually used for <em>batch processing</em> or <em>data warehousing</em> systems.</span></span></span></li></ul><p></p><p><span style="color:black"><span style="font-family: Verdana; "><span class="Apple-style-span" style="font-size: medium;"><br /> </span></span></span></p><p><span style="color: black; font-family: Tahoma; "><span class="Apple-style-span" style="font-size: medium;">FIRST_ROWS(n)<br /></span></span></p><p></p><ul><li><span style="color: black; font-family: Tahoma; "><span class="Apple-style-span" style="font-size: medium;">return the first n rows as fast as possible, where n is 1, 10, 100, or 1000.</span></span></li><li><span style="font-family: Verdana; "><span style="color:black"><span class="Apple-style-span" style="font-size: medium;">One of the hints that 'invokes' the </span></span></span><span style="color:#553333; text-decoration:underline"><span class="Apple-style-span" style="font-size: medium;">Cost based optimizer</span></span></li><li><span style="color:black"><span><span class="Apple-style-span"><span class="Apple-style-span"><span class="Apple-style-span" style="font-size: medium;">FIRST_ROWS is usually used for </span></span><em style="font-family: Verdana; font-size: medium; ">OLTP</em><span class="Apple-style-span"><span class="Apple-style-span" style="font-size: medium;"> systems.</span></span></span></span></span></li></ul><p></p><p><span style="color:black"><span><span class="Apple-style-span"><br /></span></span></span></p><p><span style="color: black; font-family: Tahoma; "><span class="Apple-style-span" style="font-size: medium;">RULE<br /></span></span></p><p></p><ul><li><span style="color: black; font-family: Tahoma; "><span class="Apple-style-span" style="font-size: medium;">use to denote Rule Based Optimization. Not valid in Oracle 10g.</span></span></li><li><span style="color:black"><span style="font-family: Verdana; "><span class="Apple-style-span" style="font-size: medium;">The RULE hint should be considered deprecated as it is dropped from Oracle9i2.</span></span></span></li></ul><p></p><p><span style="color: black; font-family: Tahoma; "><span class="Apple-style-span" style="font-size: medium;">CHOOSE</span></span></p><p></p><ul><li><span style="color: black; font-family: Tahoma; "><span class="Apple-style-span" style="font-size: medium;">use to denote Cost Based Optimization. Not valid in Oracle 10g.</span></span></li><li><span style="font-family: Verdana; "><span style="color:black"><span class="Apple-style-span" style="font-size: medium;">One of the hints that 'invokes' the </span></span></span><span style="color:#553333; text-decoration:underline"><span class="Apple-style-span" style="font-size: medium;">Cost based optimizer</span></span></li><li><span style="color:black"><span class="Apple-style-span"><span class="Apple-style-span" style="font-size: medium;">This hint lets the server choose (between ALL_ROWS and FIRST_ROWS, based on </span></span></span><span style="color:#553333; text-decoration:underline"><span class="Apple-style-span" style="font-size: medium;">statistics gathered</span></span></li></ul><p></p><p><span style="color: black; font-family: 'Trebuchet MS'; "><span class="Apple-style-span"><span class="Apple-style-span" style="font-size: large;"><i><b>2. Access Path Hints</b></i></span><br /></span></span></p><p><span style="color: black; font-family: Tahoma; "><span class="Apple-style-span" style="font-size: medium;">There are many ways to access data in a table. You can perform a full table scan or access the data using an index on the table. If using an index, you can use it in ascending mode or descending mode. The access path hints are:<br /></span></span></p><p><span style="font-family: Verdana; "><span style="color:black"><span class="Apple-style-span" style="font-size: medium;">CLUSTER<br /></span></span></span></p><ul><li><span style="font-family: Verdana; "><span style="color:black"><span class="Apple-style-span" style="font-size: medium;"><span class="Apple-style-span" style="font-family: Georgia, serif; font-size: 16px; "><span style="font-family: Verdana; "><span style="color:black"><span class="Apple-style-span" style="font-size: medium;">Performs a </span></span></span><span style="color:#553333; text-decoration:underline"><span class="Apple-style-span" style="font-size: medium;">nested loop</span></span><span style="color:black"><span class="Apple-style-span" style="font-size: medium;"> by the cluster index of one of the tables.</span></span></span></span></span></span></li></ul><p></p><p><span style="color: black; font-family: Verdana; "><span class="Apple-style-span" style="font-size: medium;">HASH<br /></span></span></p><ul><li><span style="color: black; font-family: Verdana; "><span class="Apple-style-span" style="font-size: medium;"><span class="Apple-style-span" style="font-family: Georgia, serif; font-size: 16px; "><span style="color: black; font-family: Verdana; "><span class="Apple-style-span" style="font-size: medium;">Hashes one table (full scan) and creates a hash index for that table. Then hashes other table and uses hash index to find corresponding records. Therefore not suitable for < or > join conditions.</span></span></span></span></span></li></ul><p></p><p><span style="font-family: Verdana; "><span style="color:black"><span class="Apple-style-span" style="font-size: medium;">ROWID<br /></span></span></span></p><ul><li><span style="font-family: Verdana; "><span style="color:black"><span class="Apple-style-span" style="font-size: medium;"><span class="Apple-style-span" style="font-family: Georgia, serif; font-size: 16px; "><span style="font-family: Verdana; "><span style="color:black"><span class="Apple-style-span" style="font-size: medium;">Retrieves the row by </span></span></span><span style="color:#553333; text-decoration:underline"><span class="Apple-style-span" style="font-size: medium;">rowid</span></span></span></span></span></span></li></ul><p></p><p><span style="color:black"><span style="font-family: Verdana; "><span class="Apple-style-span" style="font-size: medium;">INDEX<br /></span></span></span></p><ul><li><span style="color:black"><span style="font-family: Verdana; "><span class="Apple-style-span" style="font-size: medium;"><span class="Apple-style-span" style="font-family: Georgia, serif; -webkit-text-decorations-in-effect: none; font-size: 16px; "><span style="color:black"><span style="font-family: Verdana; "><span class="Apple-style-span" style="font-size: medium;">Specifying that index index_name should be used on table tab_name: </span></span><span style="font-family: 'Courier New'; "><span class="Apple-style-span" style="font-size: medium;">/*+ index (tab_name index_name) */</span></span></span></span></span></span></span></li><li><span style="color:black"><span style="font-family: Verdana; "><span class="Apple-style-span" style="font-size: medium;"><span class="Apple-style-span" style="font-family: Georgia, serif; -webkit-text-decorations-in-effect: none; font-size: 16px; "><span style="color:black"><span style="font-family: Verdana; "><span class="Apple-style-span" style="font-size: medium;">Specifying that the index should be used the the </span></span></span><span style="color: rgb(85, 51, 51); font-family: Verdana; text-decoration: underline; "><span class="Apple-style-span" style="font-size: medium;">CBO</span></span><span style="color:black"><span style="font-family: Verdana; "><span class="Apple-style-span" style="font-size: medium;">thinks is most suitable. (Not always a good choice).</span></span></span></span></span></span></span></li><li><span style="color:black"><span style="font-family: Verdana; "><span class="Apple-style-span" style="font-size: medium;"><span class="Apple-style-span" style="font-family: Georgia, serif; font-size: 16px; "><span style="color:black"><span><span class="Apple-style-span"><span class="Apple-style-span"><span class="Apple-style-span" style="font-size: medium;">Starting with Oracle 10g, the index hint can be described: </span></span></span></span><span style="font-family: 'Courier New'; "><span class="Apple-style-span" style="font-size: medium;">/*+ index(my_tab my_tab(col_1, col_2)) */</span></span><span style="font-family: Verdana; "><span class="Apple-style-span" style="font-size: medium;">. Using the index on my_tab that starts with the columns col_1 and col_2.</span></span></span></span></span></span></span></li></ul><p></p><p><span style="color: black; font-family: Verdana; "><span class="Apple-style-span" style="font-size: medium;">INDEX_COMBINE<br /></span></span></p><p><span style="color:black"><span style="font-family: Verdana; "><span class="Apple-style-span" style="font-size: medium;">AND_EQUAL<br />The AND_EQUAL hint explicitly chooses an execution plan that uses an access path that merges the scans on several single-column indexes</span></span><span style="font-family: Tahoma; "><span class="Apple-style-span" style="font-size: medium;"><br /> </span></span></span></p><p><span style="color: black; font-family: Tahoma; "><span class="Apple-style-span" style="font-size: medium;">FULL suggests a full table scan<br /><br /></span></span></p><p><span style="color: black; font-family: Tahoma; "><span class="Apple-style-span" style="font-size: medium;">NO_INDEX suggests not to use an index<br /><br /></span></span></p><p><span style="color: black; font-family: Tahoma; "><span class="Apple-style-span" style="font-size: medium;">INDEX_ASC suggests to use an index in ascending mode<br /><br /></span></span></p><p><span style="color: black; font-family: Tahoma; "><span class="Apple-style-span" style="font-size: medium;">INDEX_DESC suggests to use an index in descending mode<br /><br /></span></span></p><p><span style="color: black; font-family: Tahoma; "><span class="Apple-style-span" style="font-size: medium;">INDEX_JOIN suggests to use an index join access method<br /><br /></span></span></p><p><span style="color: black; font-family: Tahoma; "><span class="Apple-style-span" style="font-size: medium;">INDEX_FFS suggests to use an index full fast scan<br /><br /></span></span></p><p><span style="color: black; font-family: Tahoma; "><span class="Apple-style-span" style="font-size: medium;">NO_INDEX_FFS suggests not to use an index full fast scan<br /><br /></span></span></p><p><span style="color: black; font-family: Tahoma; "><span class="Apple-style-span" style="font-size: medium;">INDEX_SS suggests to use an index skip scan. Available only in Oracle 10g.<br /><br /></span></span></p><p><span style="color: black; font-family: Tahoma; "><span class="Apple-style-span" style="font-size: medium;">INDEX_SS_ASC suggests to use an index skip scan in ascending mode. Available only in Oracle 10g.<br /><br /></span></span></p><p><span style="color: black; font-family: Tahoma; "><span class="Apple-style-span" style="font-size: medium;">INDEX_SS_DESC suggests to use an index skip scan in descending mode. Available only in Oracle 10g.<br /><br /></span></span></p><p><span style="color: black; font-family: Tahoma; "><span class="Apple-style-span" style="font-size: medium;">NO_INDEX_SS suggests not to use an index skip scan. Available only in Oracle 10g.<br /></span></span></p><p><span style="color: black; font-family: 'Trebuchet MS'; "><span class="Apple-style-span" style="font-size: medium;">3</span><span class="Apple-style-span"><span class="Apple-style-span" style="font-size: large;"><b><i>. </i></b></span><span class="Apple-style-span" style="font-size: large;"><b><i>Join Hints</i></b></span><br /></span></span></p><p><span style="color: black; font-family: Tahoma; "><span class="Apple-style-span" style="font-size: medium;">There are many methods used to join two tables together. The join hints are:<br /></span></span></p><p></p><ul><li><span class="Apple-style-span" style="font-family: Tahoma; font-size: medium; ">USE_NL Use a Nested Loop join method. Can specify the inner table.</span></li><li><span class="Apple-style-span" style="-webkit-text-decorations-in-effect: underline; "><span style="color: black; font-family: Tahoma; "><span class="Apple-style-span" style="font-size: medium;">NO_USE_NL Do not use a Nested Loop join method. Available only in Oracle 10g.</span></span></span></li><li><span style="color: black; font-family: Tahoma; "><span class="Apple-style-span" style="font-size: medium;">USE_NL_WITH_INDEX Use a Nested Loop join method with an index. Available only in Oracle 10g.</span></span></li><li><span style="color: black; font-family: Tahoma; "><span class="Apple-style-span" style="font-size: medium;">USE_MERGE Use a Sort Merge join method. Can specify the inner table.</span></span></li><li><span style="color: black; font-family: Tahoma; "><span class="Apple-style-span" style="font-size: medium;">NO_USE_MERGE Do not use a Sort Merge join method. Available only in Oracle 10g.</span></span></li><li><span style="color: black; font-family: Tahoma; "><span class="Apple-style-span" style="font-size: medium;">USE_HASH Use a Hash join method. Can specify the inner table</span></span></li><li><span style="color: black; font-family: Tahoma; "><span class="Apple-style-span" style="font-size: medium;">NO_USE_HASH Do not use the Hash join method. Available only in Oracle 10g.</span></span></li></ul><p></p><p><span style="color: black; font-family: 'Trebuchet MS'; "><span class="Apple-style-span"><b><span class="Apple-style-span" style="font-size: large;"><i>4. </i></span></b><b><span class="Apple-style-span" style="font-size: large;"><i>Parallel Hints</i></span></b><br /></span></span></p><p><span style="color: black; font-family: Tahoma; "><span class="Apple-style-span" style="font-size: medium;">There are a number of hints used in parallel processing of queries. Parallel queries use multiple processors on the database server to obtain results faster. The paralle hints are:<br /></span></span></p><p></p><ul><li><span style="color: black; font-family: Tahoma; "><span class="Apple-style-span" style="font-size: medium;">PARALLEL(n) Suggest to perform the operation in parallel. The degree of parallelization, n, can be specified.</span></span></li><li><span style="color: black; font-family: Tahoma; "><span class="Apple-style-span" style="font-size: medium;">NO_PARALLEL Suggest to not perform the query in parallel. This overrides the parallel specification for a table.</span></span></li><li><span style="color: black; font-family: Tahoma; "><span class="Apple-style-span" style="font-size: medium;">PARALLEL_INDEX(n) Suggest to parallelize the index range scan. The degree of parallelization, n, can be specified.</span></span></li><li><span style="color: black; font-family: Tahoma; "><span class="Apple-style-span" style="font-size: medium;">NO_PARALLEL_INDEX Suggest to not parallelize the index range scan.</span></span></li></ul><p></p><p><span style="color: black; font-family: 'Trebuchet MS'; "><span class="Apple-style-span" style="font-size: medium;">5</span><span class="Apple-style-span"><span class="Apple-style-span" style="font-size: large;"><b><i>. </i></b></span><span class="Apple-style-span" style="font-size: large;"><b><i>Miscellaneous Hints</i></b></span><br /></span></span></p><p><span style="color: black; font-family: Tahoma; "><span class="Apple-style-span" style="font-size: medium;">The miscellaneous hints are:<br /></span></span></p><p></p><ul><li><span style="color: black; font-family: Tahoma; "><span class="Apple-style-span" style="font-size: medium;">APPEND</span></span></li></ul><span class="Apple-style-span" style="font-family: Tahoma; font-size: medium; "> Enables Direct Path insert mode so that data is appended to the end of the table.</span><br /><span style="font-family: Verdana; "><span style="color:black"><span class="Apple-style-span" style="font-size: medium;"> If a table or an index is specified with </span></span></span><span style="color:#553333; text-decoration:underline"><span class="Apple-style-span" style="font-size: medium;">nologging</span></span><span style="color:black"><span class="Apple-style-span" style="font-size: medium;">, this hint applied with an insert </span></span><span style="color:black"><span class="Apple-style-span" style="font-size: medium;">statement produces a <strong>direct path insert</strong> which reduces generation of </span></span><span style="color:#553333; text-decoration:underline"><span class="Apple-style-span" style="font-size: medium;">redo</span></span><p></p><p></p><ul><li><span style="color: black; font-family: Tahoma; "><span class="Apple-style-span" style="font-size: medium;">NOAPPEND Disables Direct Path insert mode.</span></span></li><li><span style="color: black; font-family: Tahoma; "><span class="Apple-style-span" style="font-size: medium;">CACHE Blocks accessed with this query are placed on the most recently used end of the LRU list.</span></span></li><li><span style="color: black; font-family: Tahoma; "><span class="Apple-style-span" style="font-size: medium;">NOCACHE Blocks accessed with this query are placed on the least recently used end of the LRU list.</span></span></li><li><span style="color: black; font-family: Tahoma; "><span class="Apple-style-span" style="font-size: medium;">PUSH_SUBQ Causes subqueries to be evaluated at the earliest possible time.</span></span></li><li><span style="color: black; font-family: Tahoma; "><span class="Apple-style-span" style="font-size: medium;">NO_PUSH_SUBQ Causes subqueries to be evaluated at the last possible time.</span></span></li><li><span style="color: black; font-family: Tahoma; "><span class="Apple-style-span" style="font-size: medium;">DRIVING_SITE Causes another database in a distributed query to be the driving site for the query.</span></span></li><li><span style="color: black; font-family: Verdana; "><span class="Apple-style-span" style="font-size: medium;">ANTIJOIN</span></span></li><li><a name="append"><span style="color: black; font-family: Verdana; "><span class="Apple-style-span" style="font-size: medium;">APPEND.</span></span></a></li><li><a name="append"><span style="color: black; font-family: Verdana; "><span class="Apple-style-span" style="font-size: medium;">BITMAP</span></span></a></li><li><a name="append"><span style="color: black; font-family: Verdana; "><span class="Apple-style-span" style="font-size: medium;">BUFFER</span></span></a></li><li><a name="append"><span style="color: black; font-family: Verdana; "><span class="Apple-style-span" style="font-size: medium;">CARDINALITY</span></span></a></li><li><a name="append"><span style="color: black; font-family: Verdana; "><span class="Apple-style-span" style="font-size: medium;">CPU_COSTING</span></span></a></li><li><a name="append"><span style="color: rgb(85, 51, 51); font-family: Verdana; text-decoration: underline; "><span class="Apple-style-span" style="font-size: medium;">DYNAMIC_SAMPLING</span></span></a></li><li><a name="append"><span class="Apple-style-span" style="font-family: Verdana; font-size: medium; ">INLINE</span></a></li><li><a name="append"><span class="Apple-style-span" style="font-family: Verdana; font-size: medium; ">MATERIALIZE</span></a></li><li><a name="append"><span class="Apple-style-span" style="font-family: Verdana; font-size: medium; ">NO_ACCESS</span></a></li><li><a name="append"><span class="Apple-style-span" style="font-family: Verdana; font-size: medium; ">NO_BUFFER</span></a></li><li><a name="append"><span class="Apple-style-span" style="font-family: Verdana; font-size: medium; ">NO_MONITORING</span></a></li><li><a name="append"><span class="Apple-style-span" style="font-family: Verdana; font-size: medium; ">NO_PUSH_PRED</span></a></li><li><a name="append"><span class="Apple-style-span" style="font-family: Verdana; font-size: medium; ">NO_QKN_BUFF</span></a></li><li><a name="append"><span class="Apple-style-span" style="font-family: Verdana; font-size: medium; ">NO_SEMIJOIN</span></a></li><li><a name="append"><span class="Apple-style-span" style="font-family: Verdana; font-size: medium; ">OR_EXPAND</span></a></li><li><a name="append"><span style="color: rgb(85, 51, 51); font-family: Verdana; text-decoration: underline; "><span class="Apple-style-span" style="font-size: medium;">ORDERED</span></span></a></li><li><a name="append"><span class="Apple-style-span" style="font-family: Verdana; font-size: medium; ">ORDERED_PREDICATES</span></a></li><li><a name="append"><span class="Apple-style-span" style="font-family: Verdana; font-size: medium; ">PUSH_PRED</span></a></li><li><a name="append"><span style="color: rgb(85, 51, 51); font-family: Verdana; text-decoration: underline; "><span class="Apple-style-span" style="font-size: medium;">QB_NAME</span></span></a></li><li><a name="append"><span style="color: rgb(85, 51, 51); font-family: Verdana; text-decoration: underline; "><span class="Apple-style-span" style="font-size: medium;">RESULT_CACHE</span></span><span style="font-family: Verdana; "><span style="color:black"><span class="Apple-style-span" style="font-size: medium;"> (</span></span><span style="color:#553333; text-decoration:underline"><span class="Apple-style-span" style="font-size: medium;">Oracle 11g</span></span><span style="color:black"><span class="Apple-style-span" style="font-size: medium;">)</span></span></span></a></li><li><a name="append"><span style="color: black; font-family: Verdana; "><span class="Apple-style-span" style="font-size: medium;">SELECTIVITY</span></span></a></li><li><a name="append"><span style="color: black; font-family: Verdana; "><span class="Apple-style-span" style="font-size: medium;">SEMIJOIN</span></span></a></li><li><a name="append"><span style="color: black; font-family: Verdana; "><span class="Apple-style-span" style="font-size: medium;">SEMIJOIN_DRIVER</span></span></a></li><li><a name="append"><span style="color: black; font-family: Verdana; "><span class="Apple-style-span" style="font-size: medium;">STAR</span></span></a></li><li><a name="append"><span style="color: black; font-family: Verdana; "><span class="Apple-style-span" style="font-size: medium;">The STAR hint forces a star query plan to be used, if possible. A star plan has the largest table in the query last in the join order and joins it with a nested loops join on a concatenated index. The STAR hint applies when there are at least three tables, the large table's concatenated index has at least three columns, and there are no conflicting access or join method hints. The optimizer also considers different permutations of the small tables.</span></span></a></li><li><a name="append"><span style="color: black; font-family: Verdana; "><span class="Apple-style-span" style="font-size: medium;">SWAP_JOIN_INPUTS</span></span></a></li><li><a name="append"><span style="color: black; font-family: Verdana; "><span class="Apple-style-span" style="font-size: medium;">USE_ANTI</span></span></a></li><li><a name="append"><span style="color: black; font-family: Verdana; "><span class="Apple-style-span" style="font-size: medium;">USE_SEMI</span></span></a></li></ul><p></p><p><a name="append"><span class="Apple-style-span" style="font-size: medium;"><br /></span></a></p><p style="text-align: center;"><a name="append"><span style="color: rgb(66, 116, 194); font-family: 'Courier New'; "><span class="Apple-style-span"><span class="Apple-style-span" style="font-size: large; "><i>Undocumented hints:</i></span><br /></span></span></a></p><p></p><ul><li><a name="append"><span style="color: black; font-family: Verdana; "><span class="Apple-style-span" style="font-size: medium;">BYPASS_RECURSIVE_CHECK</span></span></a></li><li><a name="append"><span style="color: black; font-family: Verdana; "><span class="Apple-style-span" style="font-size: medium;">Workaraound for bug 1816154</span></span></a></li><li><a name="append"><span style="color: black; font-family: Verdana; "><span class="Apple-style-span" style="font-size: medium;">BYPASS_UJVC</span></span></a></li><li><a name="append"><span style="color: black; font-family: Verdana; "><span class="Apple-style-span" style="font-size: medium;">CACHE_CB</span></span></a></li><li><a name="append"><span style="color: black; font-family: Verdana; "><span class="Apple-style-span" style="font-size: medium;">CACHE_TEMP_TABLE</span></span></a></li><li><a name="append"><span style="color: black; font-family: Verdana; "><span class="Apple-style-span" style="font-size: medium;">CIV_GB</span></span></a></li><li><a name="append"><span style="color: black; font-family: Verdana; "><span class="Apple-style-span" style="font-size: medium;">COLLECTIONS_GET_REFS</span></span></a></li><li><a name="append"><span style="color: black; font-family: Verdana; "><span class="Apple-style-span" style="font-size: medium;">CUBE_GB</span></span></a></li><li><a name="append"><span style="color: black; font-family: Verdana; "><span class="Apple-style-span" style="font-size: medium;">CURSOR_SHARING_EXACT</span></span></a></li><li><a name="append"><span style="color: black; font-family: Verdana; "><span class="Apple-style-span" style="font-size: medium;">DEREF_NO_REWRITE</span></span></a></li><li><a name="append"><span style="color: black; font-family: Verdana; "><span class="Apple-style-span" style="font-size: medium;">DML_UPDATE</span></span></a></li><li><a name="append"><span style="color: black; font-family: Verdana; "><span class="Apple-style-span" style="font-size: medium;">DOMAIN_INDEX_NO_SORT</span></span></a></li><li><a name="append"><span style="color: black; font-family: Verdana; "><span class="Apple-style-span" style="font-size: medium;">DOMAIN_INDEX_SORT</span></span></a></li><li><a name="append"><span style="color: black; font-family: Verdana; "><span class="Apple-style-span" style="font-size: medium;">DYNAMIC_SAMPLING</span></span></a></li><li><a name="append"><span style="color: black; font-family: Verdana; "><span class="Apple-style-span" style="font-size: medium;">DYNAMIC_SAMPLING_EST_CDN</span></span></a></li><li><a name="append"><span style="color: black; font-family: Verdana; "><span class="Apple-style-span" style="font-size: medium;">EXPAND_GSET_TO_UNION</span></span></a></li><li><a name="append"><span style="color: black; font-family: Verdana; "><span class="Apple-style-span" style="font-size: medium;">FORCE_SAMPLE_BLOCK</span></span></a></li><li><a name="append"><span style="color: black; font-family: Verdana; "><span class="Apple-style-span" style="font-size: medium;">GBY_CONC_ROLLUP</span></span></a></li><li><a name="append"><span style="color: black; font-family: Verdana; "><span class="Apple-style-span" style="font-size: medium;">GLOBAL_TABLE_HINTS</span></span></a></li><li><a name="append"><span style="color: black; font-family: Verdana; "><span class="Apple-style-span" style="font-size: medium;">HWM_BROKERED</span></span></a></li><li><a name="append"><span style="color: black; font-family: Verdana; "><span class="Apple-style-span" style="font-size: medium;">IGNORE_ON_CLAUSE</span></span></a></li><li><a name="append"><span style="color: black; font-family: Verdana; "><span class="Apple-style-span" style="font-size: medium;">IGNORE_WHERE_CLAUSE</span></span></a></li><li><a name="append"><span style="color: black; font-family: Verdana; "><span class="Apple-style-span" style="font-size: medium;">INDEX_RRS</span></span></a></li><li><a name="append"><span style="color: black; font-family: Verdana; "><span class="Apple-style-span" style="font-size: medium;">INDEX_SS</span></span></a></li><li><a name="append"><span style="color: black; font-family: Verdana; "><span class="Apple-style-span" style="font-size: medium;">INDEX_SS_ASC</span></span></a></li><li><a name="append"><span style="color: black; font-family: Verdana; "><span class="Apple-style-span" style="font-size: medium;">INDEX_SS_DESC</span></span></a></li><li><a name="append"><span style="color: black; font-family: Verdana; "><span class="Apple-style-span" style="font-size: medium;">LIKE_EXPAND</span></span></a></li><li><a name="append"><span style="color: black; font-family: Verdana; "><span class="Apple-style-span" style="font-size: medium;">LOCAL_INDEXES</span></span></a></li><li><a name="append"><span style="color: black; font-family: Verdana; "><span class="Apple-style-span" style="font-size: medium;">MV_MERGE</span></span></a></li><li><a name="append"><span style="color: black; font-family: Verdana; "><span class="Apple-style-span" style="font-size: medium;">NESTED_TABLE_GET_REFS</span></span></a></li><li><a name="append"><span style="color: black; font-family: Verdana; "><span class="Apple-style-span" style="font-size: medium;">NESTED_TABLE_SET_REFS</span></span></a></li><li><a name="append"><span style="color: black; font-family: Verdana; "><span class="Apple-style-span" style="font-size: medium;">NESTED_TABLE_SET_SETID</span></span></a></li><li><a name="append"><span style="color: black; font-family: Verdana; "><span class="Apple-style-span" style="font-size: medium;">NO_FILTERING</span></span></a></li><li><a name="append"><span style="color: black; font-family: Verdana; "><span class="Apple-style-span" style="font-size: medium;">NO_ORDER_ROLLUPS</span></span></a></li><li><a name="append"><span style="color: black; font-family: Verdana; "><span class="Apple-style-span" style="font-size: medium;">NO_PRUNE_GSETS</span></span></a></li><li><a name="append"><span style="color: black; font-family: Verdana; "><span class="Apple-style-span" style="font-size: medium;">NO_STATS_GSETS</span></span></a></li><li><a name="append"><span style="color: black; font-family: Verdana; "><span class="Apple-style-span" style="font-size: medium;">NO_UNNEST</span></span></a></li><li><a name="append"><span style="color: black; font-family: Verdana; "><span class="Apple-style-span" style="font-size: medium;">NOCPU_COSTING</span></span></a></li><li><a name="append"><span style="color: black; font-family: Verdana; "><span class="Apple-style-span" style="font-size: medium;">OVERFLOW_NOMOVE</span></span></a></li><li><a name="append"><span style="color: black; font-family: Verdana; "><span class="Apple-style-span" style="font-size: medium;">PIV_GB</span></span></a></li><li><a name="append"><span style="color: black; font-family: Verdana; "><span class="Apple-style-span" style="font-size: medium;">PIV_SSF</span></span></a></li><li><a name="append"><span style="color: black; font-family: Verdana; "><span class="Apple-style-span" style="font-size: medium;">PQ_MAP</span></span></a></li><li><a name="append"><span style="color: black; font-family: Verdana; "><span class="Apple-style-span" style="font-size: medium;">PQ_NOMAP</span></span></a></li><li><a name="append"><span style="color: black; font-family: Verdana; "><span class="Apple-style-span" style="font-size: medium;">REMOTE_MAPPED</span></span></a></li><li><a name="append"><span style="color: black; font-family: Verdana; "><span class="Apple-style-span" style="font-size: medium;">RESTORE_AS_INTERVALS</span></span></a></li><li><a name="append"><span style="color: black; font-family: Verdana; "><span class="Apple-style-span" style="font-size: medium;">SAVE_AS_INTERVALS</span></span></a></li><li><a name="append"><span style="color: black; font-family: Verdana; "><span class="Apple-style-span" style="font-size: medium;">SCN_ASCENDING</span></span></a></li><li><a name="append"><span style="color: black; font-family: Verdana; "><span class="Apple-style-span" style="font-size: medium;">SKIP_EXT_OPTIMIZER</span></span></a></li><li><a name="append"><span style="color: black; font-family: Verdana; "><span class="Apple-style-span" style="font-size: medium;">SQLLDR</span></span></a></li><li><a name="append"><span style="color: black; font-family: Verdana; "><span class="Apple-style-span" style="font-size: medium;">SYS_DL_CURSOR</span></span></a></li><li><a name="append"><span style="color: black; font-family: Verdana; "><span class="Apple-style-span" style="font-size: medium;">SYS_PARALLEL_TXN</span></span></a></li><li><a name="append"><span style="color: black; font-family: Verdana; "><span class="Apple-style-span" style="font-size: medium;">SYS_RID_ORDER</span></span></a></li><li><a name="append"><span style="color: black; font-family: Verdana; "><span class="Apple-style-span" style="font-size: medium;">TIV_GB</span></span></a></li><li><a name="append"><span style="color: black; font-family: Verdana; "><span class="Apple-style-span" style="font-size: medium;">TIV_SSF</span></span></a></li><li><a name="append"><span style="color: black; font-family: Verdana; "><span class="Apple-style-span" style="font-size: medium;">UNNEST</span></span></a></li><li><a name="append"><span style="color: black; font-family: Verdana; "><span class="Apple-style-span" style="font-size: medium;">USE_TTT_FOR_GSETS</span></span></a></li></ul><p></p><p><a name="append"><span class="Apple-style-span" style="font-size: medium;"><br /></span></a></p><p><a name="append"><span class="Apple-style-span" style="font-size: medium;">Note: The above information helped me to optimize queries on Transaction tables which will be updated every second with several new records. The following are the sources which provided me information to publish this post.</span></a></p><p></p><p class="MsoNormal"><a name="append"><b style="mso-bidi-font-weight:normal"><span style="font-size:14.0pt;mso-bidi-font-size:11.0pt;line-height:115%;font-family: "Times New Roman","serif"">Source:</span></b></a></p><p class="MsoNormal"></p><ol><li><a href="http://www.toadworld.com/KNOWLEDGE/KnowledgeXpertforOracle/tabid/648/TopicID/OTOC91/Default.aspx">http://www.toadworld.com/KNOWLEDGE/KnowledgeXpertforOracle/tabid/648/TopicID/OTOC91/Default.aspx</a></li><li><a href="http://www.adp-gmbh.ch/ora/sql/hints/index.html">http://www.adp-gmbh.ch/ora/sql/hints/index.html</a></li><li><a href="http://download.oracle.com/docs/cd/A97630_01/server.920/a96533/toc.htm">http://download.oracle.com/docs/cd/A97630_01/server.920/a96533/toc.htm</a></li></ol><p></p></span>Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-9156846351847927902.post-20190359432448762382010-10-28T11:44:00.000-07:002010-10-28T11:46:11.020-07:00Five Mistakes in making a Resume<span class="Apple-style-span" style="font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12px; color: rgb(53, 53, 53); line-height: 18px; "><table width="100%" border="0" cellspacing="0" cellpadding="0" bgcolor="#FFFFFF" style="border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: rgb(124, 216, 239); border-right-color: rgb(124, 216, 239); border-bottom-color: rgb(124, 216, 239); border-left-color: rgb(124, 216, 239); padding-top: 10px; padding-right: 10px; padding-bottom: 10px; padding-left: 10px; "><tbody><tr><td align="left" valign="top" style="font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12px; line-height: 18px; font-weight: normal; color: rgb(53, 53, 53); text-decoration: none; "><div align="justify">There's one magical thing that can get you the job of your dreams. Contrary to popular belief, it isn't nepotism, sycophancy or even a bribe; it's a small document called the Curriculum Vitae, or Resume. Even though most of us recognise the importantance of a resume, we don't carve out enough time to give our resume the attention it deserves. Often, CVs are shoddy, incomplete, irrelevant and, sometimes, downright hilarious. Here are five mistakes you need to avoid to make sure your CV is a winner.</div></td></tr><tr><td height="29" align="left" valign="middle" bgcolor="#000000" class="bold_text" style="font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 18px; font-weight: bold; color: rgb(150, 40, 39); text-decoration: none; "><img src="http://www.deltaplacements.com/images/bullet3.jpg" alt="" width="7" height="9" hspace="5" align="absmiddle" />Mistake 1: Writing too much</td></tr><tr><td align="left" valign="top" style="font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12px; line-height: 18px; font-weight: normal; color: rgb(53, 53, 53); text-decoration: none; "><div align="justify">"Length is the biggest problem, with most CVs often being a minimum of three pages. I once received a CV that was 11 pages long," says Purvi Seth, vice president of Shilputsi Consultants, a human resources development firm.<br /><br />More often than not, literary aspirations come tend to the fore when one is writing a CV; people end up filling pages and pages of details. Those who can't find enough details to fill the pages write the same thing over and over again, in different styles, words and jargon.<br /><br />A prospective employer faces two choices when he or she takes the first look at such a CV -- hit the delete button or hire a professional copyeditor to cut the chaff and find relevant matter.<br /><br />BTW, even though copyeditors come cheap these days, employers prefer the former. So:<br /><br /><table width="100%" border="0" cellspacing="0" cellpadding="0"><tbody><tr><td width="2%" align="left" valign="top" class="bullet2" style="font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12px; line-height: 18px; font-weight: normal; color: rgb(53, 53, 53); text-decoration: none; background-image: url(http://www.deltaplacements.com/images/bullet2.jpg); background-position: 0% 8px; background-repeat: no-repeat no-repeat; "> </td><td width="98%" align="left" valign="top" style="font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12px; line-height: 18px; font-weight: normal; color: rgb(53, 53, 53); text-decoration: none; ">Keep it short; ideally, a CV should not go beyond two pages at most. However, if your achievements are really great, one extra page is negotiable.<br /></td></tr><tr><td width="2%" align="left" valign="top" class="bullet2" style="font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12px; line-height: 18px; font-weight: normal; color: rgb(53, 53, 53); text-decoration: none; background-image: url(http://www.deltaplacements.com/images/bullet2.jpg); background-position: 0% 8px; background-repeat: no-repeat no-repeat; "> </td><td width="98%" align="left" valign="top" style="font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12px; line-height: 18px; font-weight: normal; color: rgb(53, 53, 53); text-decoration: none; ">Keep it sweet, i e relevant. Anything more than that and your CV will make a beeline for the paper shredder.</td></tr></tbody></table></div></td></tr><tr><td align="left" valign="top" style="font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12px; line-height: 18px; font-weight: normal; color: rgb(53, 53, 53); text-decoration: none; "> </td></tr><tr><td align="left" valign="top" style="font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12px; line-height: 18px; font-weight: normal; color: rgb(53, 53, 53); text-decoration: none; "><span class="bold_text" style="font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 18px; font-weight: bold; color: rgb(150, 40, 39); text-decoration: none; "><img src="http://www.deltaplacements.com/images/bullet3.jpg" alt="" width="7" height="9" hspace="5" align="absmiddle" />Mistake 2: Writing too little</span></td></tr><tr><td align="left" valign="top" style="font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12px; line-height: 18px; font-weight: normal; color: rgb(53, 53, 53); text-decoration: none; ">If it isn't one, it's the other. Consider this CV:<br /><br />'Worked as product manager for HLL between July 2000 and September 2003.' Does it indicate anything besides the fact that the person worked for HLL? Fancy designations do little to explain the kind of work you might have done. So, in your enthusiasm to adhere to the guidelines in Mistake 1, don't forego your job responsibilities and details about the company or the department you worked for.<br /><br />The above should read:<br />'Worked as product manager, between July 2000 and September 2003, for the colour cosmetics division of HLL, a premier FMCG company in India, with a turnover of Rs 2614.07 crore. 'Job responsibilities included overseeing the operations of the department comprising 10 sales managers, setting targets for the team, keeping track of market trends and coordinating between the production, logistics and sales functions.<br /><br />'Under my supervision, the department posted an annual growth of 40 percent.' This gives an indication about the kind of work the applicant has done and his/ her achievement. However, beware of going overboard with the details of your job responsibilities. "One of the applicants was looking for an administrative job, and housekeeping was one of the functions. The CV mentioned 'making sure the toilet bowls remain clean', as one of the job responsibilities," laughs Seth.</td></tr><tr><td align="left" valign="top" style="font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12px; line-height: 18px; font-weight: normal; color: rgb(53, 53, 53); text-decoration: none; "> </td></tr><tr><td align="left" valign="top" style="font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12px; line-height: 18px; font-weight: normal; color: rgb(53, 53, 53); text-decoration: none; "><span class="bold_text" style="font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 18px; font-weight: bold; color: rgb(150, 40, 39); text-decoration: none; "><img src="http://www.deltaplacements.com/images/bullet3.jpg" alt="" width="7" height="9" hspace="5" align="absmiddle" />Mistake 3: Irrelevant Details</span></td></tr><tr><td align="left" valign="top" style="font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12px; line-height: 18px; font-weight: normal; color: rgb(53, 53, 53); text-decoration: none; "><div align="justify">Does it matter to your prospective employer if your eyes are blue and if you belong to the vaishnav gotra of the Brahmin caste?<br /><br />Chances are it doesn't, unless you are applying for a job that depends on your physical attributes or you are penning down a CV for matrimonial purposes. Similarly, your star sign, details of family members, list of affiliations to hobby clubs (unless they complement your profession in some way), height, weight, colour of your hair and eyes, complexion and other details are of no consequence to the prospective employer. Ditch these and use the space to highlight your achievements, your strengths and your qualifications. The latter needs to be to the point. For example, your latest education and degrees are the ones that matter, not your kindergarten marks. So, be stingy here -- include what matters, trash what doesn't. "I have seen CVs that included details of grandfathers and their professions too. One person had also included his blood group in the CV. These facts make no difference to the employer at all," says Seth. "Some of them also add their body statistics. This can be entirely done away with unless you are in the showbiz or airline industry.<br /><br />"Another mistake I have noticed in many CVs is that people mention their religion. This is unnecessary unless the job is for candidates of a specific religion only," says Tushar Guha, managing director of Nrityanjali, an institute for personality development and management services.</div></td></tr><tr><td align="left" valign="top" style="font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12px; line-height: 18px; font-weight: normal; color: rgb(53, 53, 53); text-decoration: none; "> </td></tr><tr><td align="left" valign="top" style="font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12px; line-height: 18px; font-weight: normal; color: rgb(53, 53, 53); text-decoration: none; "><span class="bold_text" style="font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 18px; font-weight: bold; color: rgb(150, 40, 39); text-decoration: none; "><img src="http://www.deltaplacements.com/images/bullet3.jpg" alt="" width="13" height="9" hspace="5" align="absmiddle" />Mistake 4: The Information Flow</span></td></tr><tr><td align="left" valign="top" style="font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12px; line-height: 18px; font-weight: normal; color: rgb(53, 53, 53); text-decoration: none; ">Most people start with their birth date and list everything in chronological order. So, if they started with ABC company at the age of 18 and are now, say, 38 years old and work for XYZ, chances are they will start their career history with ABC and list XYZ last. This is a strict no-no because, to the prospective employer, your last job profile matters more than your first one. Few employers like to spend an hour on a CV searching for the last position held by the applicant.<br /><br />This applies to educational qualifications too. A CV favours reverse chronological order. Stick to it. "Most of the time, professionals writing their CV list their qualifications and their work experience in chronological order. The order should be reversed in order to bring the crux of the CV upfront," says Guha.<br /><br />Seth gives the example of a CV which started by listing work history that dated back to 1983 first and then went on to 2004. She had a tough time looking for the current job. Hobbies should come towards the end, but shouldn't be done away with. "They provide an insight into the applicant's personality. These days, the emphasis is not only on your skills but also on your personality," says Guha.</td></tr><tr><td align="left" valign="top" style="font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12px; line-height: 18px; font-weight: normal; color: rgb(53, 53, 53); text-decoration: none; "> </td></tr><tr><td align="left" valign="top" style="font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12px; line-height: 18px; font-weight: normal; color: rgb(53, 53, 53); text-decoration: none; "><span class="bold_text" style="font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 18px; font-weight: bold; color: rgb(150, 40, 39); text-decoration: none; "><img src="http://www.deltaplacements.com/images/bullet3.jpg" alt="" width="7" height="9" hspace="5" align="absmiddle" />Mistake 5: A CV-Ful of Jargon</span></td></tr><tr><td align="left" valign="top" style="font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12px; line-height: 18px; font-weight: normal; color: rgb(53, 53, 53); text-decoration: none; ">Is your writing style lucidly expressionistic, highlighting the hidden angst of an existential life?<br /><br />Wow! But what the heck does that mean? Even if your to-be-employer is Salman Rushdie, he wouldn't want to spend time trying to understand what all those big words and jargon add up to. If you think your use of jargon indicates your knowledge of the industry, think again. Most of the times, the CV goes first to the HR department. They are the ones who choose if you are fit to be called for an interview.<br /><br />Out of comprehension, out of mind. It's that basic.<br /><br />Source : </td></tr></tbody></table></span><a href="http://www.deltaplacements.com/articles.asp">http://www.deltaplacements.com/articles.asp</a>Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-9156846351847927902.post-27339781815634257712010-07-03T11:43:00.000-07:002010-07-03T11:53:18.540-07:00Web Design SecretsHey, recently i visited a article that provided a useful information regarding the web designing. I read the complete article and found very interesting and useful points for beginner. It mentioned how the website design should be and how it should not be. The article mentioned the use of sitecounters, sitemap and javascripts . <div><br /></div><div> Here i am providing some points which i liked it .</div><div><br /></div><div><span class="Apple-style-span" style=" ;font-family:Verdana, Arial, Helvetica, sans-serif;font-size:14px;"><strong>1. Think twice before using framesets:</strong> In the olden days you could argue a use for framesets because of HTML’s lousy layout capabilities. Today with CSS positioning being well supported by all the major browsers there is no need to use framesets for just about 99.9% of websites. Why don’t you want to use framesets you ask? Well beginners tend to have trouble creating and using them properly. Framesets tend to make websites more complicated than they need to be and finally they can cause you all kinds of problems with the search engines.</span></div><div><span class="Apple-style-span" style=" ;font-family:Verdana, Arial, Helvetica, sans-serif;font-size:14px;"><br /></span></div><div><span class="Apple-style-span" style=" ;font-family:Verdana, Arial, Helvetica, sans-serif;font-size:14px;">2.</span><span class="Apple-style-span" style=" ;font-family:Verdana, Arial, Helvetica, sans-serif;font-size:14px;"><strong>Chat rooms:</strong> Most people don’t give a crap about chat rooms. And worse than having a chat room is an empty chat room! Who wants to hang out at a club that has nobody inside? So unless you have a web site with tens of thousands of visitors a month and is of a subject that might necessitate a chat room, don't do it.</span></div><div><span class="Apple-style-span" style=" ;font-family:Verdana, Arial, Helvetica, sans-serif;font-size:14px;"><br /></span></div><div><span class="Apple-style-span" style=" ;font-family:Verdana, Arial, Helvetica, sans-serif;font-size:14px;"><p><strong>3.Flash intros:</strong> I am guilty of this as much as the next guy. A few years back Flash intros where all the rage, not sure if anyone knew why we ‘needed’ them, but as it turns out the ‘skip intro’ button is the 2nd most clicked on the web today. Don’t waste your time on Flash intros and in my opinion Flash should be only used in special situations.</p><p><strong>4. Under construction pages:</strong> Just forget it, if the page is not ready, don’t put it up. If you have links that are pointing to the pages, disable them until your page is ready. If your page is truly ‘under construction’ and has content on it that is ready to be seen by your web surfers, just post a ‘last updated’ date and make sure you get the new content in place soon. What ever you do, don’t put one of those cheesy ‘under construction’ images on the page.</p><p></p><h3 style="font-variant: small-caps; font-size: 14px; margin-top: 45px; ">5. Do make you web pages viewable at 800 x 600 resolution.</h3><p>Many web designers have computers that can display higher resolutions like 1024x768 and 1280 x 1024. They design there pages to fit in that resolution, when someone hits those pages with a computer that can display only a maximum of 800 x 600, the visitor has to scroll to see the page properly.</p><p>Scrolling web pages vertically (top to bottom) is ok, as long as it's not more than two and half pages or so. But scrolling horizontally (side to side) is really bad and annoying to visitors.</p><p>In a nutshell, you want to design all your pages these days for 800 x 600; they make up about 40% of the web audience!</p><p><br /></p><p>6.<span class="Apple-style-span" style="font-variant: small-caps; font-weight: bold; ">Do create a custom 404 ‘Page not found' page.</span></p><p>We've all seen them, 404 pages. On websites that are served by Windows servers it is a plain white page that has this text:</p><table cellspacing="5" cellpadding="0"><tbody><tr><td><h1 style="font-size: 25px; ">The page cannot be found</h1></td></tr><tr><td width="400"><p>The page you are looking for might have been removed, had its name changed, or is temporarily unavailable.</p></td></tr><tr><td width="400"><p>Please try the following:</p><ul style="margin-left: 0px; padding-left: 0px; "><li>If you typed the page address in the Address bar, make sure that it is spelled correctly.</li><li>Open the www.fakesite.com home page, and then look for links to the information you want.</li><li>Click the Back button to try another link.</li></ul><h2 style="font-variant: small-caps; font-size: 16px; color: rgb(193, 71, 71); ">HTTP 404 - File not found<br />Internet Information Services</h2><p>Technical Information (for support personnel)</p><ul style="margin-left: 0px; padding-left: 0px; "><li>More information: Microsoft Support</li></ul></td></tr></tbody></table><p>Not very friendly and not useful to visitors, since the page itself doesn't give you much information. The solution is that you can create your own 404 page and have that appear instead of the practically useless one that you see above.</p><p>A 404 page is just an html page like any other, you just need to ask your host to set it up so you can use your own home made 404 page. A good 404 page will be clear to the visitor that they found the right website, but just not the right page. 404 pages should include a link back to your ‘home' page and maybe the site map page. If you have a search engine built into your site, then include the search too.</p><p><br /></p><p>You can read the article through the following Link</p><p>Src: <a href="http://www.secretsites.com/do_dont_part1.jsp">http://www.secretsites.com/do_dont_part1.jsp</a></p><p><br /></p><p></p></span></div>Unknownnoreply@blogger.com0