{"id":2890,"date":"2018-02-03T20:11:53","date_gmt":"2018-02-03T11:11:53","guid":{"rendered":"http:\/\/haisins.epac.to\/wordpress\/?p=2890"},"modified":"2018-02-03T20:11:53","modified_gmt":"2018-02-03T11:11:53","slug":"oracle-sql-hint-%eb%b6%84%eb%a5%98-%eb%b3%84-%ec%84%a4%eb%aa%85","status":"publish","type":"post","link":"http:\/\/haisins.synology.me\/wordpress\/?p=2890","title":{"rendered":"ORACLE SQL HINT \ubd84\ub958 \ubcc4 \uc124\uba85"},"content":{"rendered":"<p><strong> &lt;Optimization Approaches and Goals &#8211; Optimization \u00a0\uc811\uadfc\uacfc\u00a0\ubaa9\uc801&gt; <\/strong><\/p>\n<p>&nbsp;<\/p>\n<p>\/*+ ALL_ROWS *\/<\/p>\n<p>explicitly chooses the cost-based approach to optimize a statement block with a goal of best throughput (that is, minimum total resource consumption)<\/p>\n<p>\uac00\uc7a5\u00a0\uc88b\uc740\u00a0\ub2e8\uc704\u00a0\ucc98\ub9ac\ub7c9\uc758\u00a0\ubaa9\ud45c\ub85c\u00a0\ubb38\u00a0\ube14\ub85d\uc744\u00a0\ucd5c\uc801\ud654\ud558\uae30\u00a0\uc704\ud574\u00a0cost-based \uc811\uadfc\u00a0\ubc29\ubc95\uc744\u00a0\uc120\ud0dd\ud569\ub2c8\ub2e4. (\uc989, \uc804\uccb4\uc801\uc778\u00a0\ucd5c\uc18c\uc758\u00a0\uc790\uc6d0\u00a0\uc18c\ube44)<\/p>\n<p>&nbsp;<\/p>\n<p>\/*+ CHOOSE *\/<\/p>\n<p>causes the optimizer to choose between the rule-based approach and the cost-based approach for a SQL statement based on the presence of statistics for the tables accessed by the statement<\/p>\n<p>\ucd5c\uc801\uc790(optimizer)\uac00\u00a0\uadf8\u00a0\ubb38\uc5d0\u00a0\uc758\ud574\u00a0\uc811\uadfc\ub41c\u00a0\ud14c\uc774\ube14\uc744\u00a0\uc704\ud574\u00a0\ud1b5\uacc4\uc758\u00a0\uc874\uc7ac\uc5d0\u00a0\uadfc\uac70\ub97c\u00a0\ub450\ub294\u00a0SQL \ubb38\uc744\u00a0\uc704\ud574\u00a0rule-based \uc811\uadfc\u00a0\ubc29\ubc95\uacfc\u00a0cot-based \uc811\uadfc\u00a0\ubc29\ubc95\u00a0\uc0ac\uc774\uc5d0\u00a0\uc120\ud0dd\ud558\uac8c\u00a0\ud569\ub2c8\ub2e4.<\/p>\n<p>&nbsp;<\/p>\n<p>\/*+ FIRST_ROWS *\/<\/p>\n<p>explicitly chooses the cost-based approach to optimize a statement block with a goal of best response time (minimum resource usage to return first row)<\/p>\n<p>\uac00\uc7a5\u00a0\uc88b\uc740\u00a0\uc751\ub2f5\u00a0\uc2dc\uac04\uc758\u00a0\ubaa9\ud45c\ub85c\u00a0\ubb38\u00a0\ube14\ub85d\uc744\u00a0\ucd5c\uc801\ud654\ud558\uae30\u00a0\uc704\ud574\u00a0cost-based \uc811\uadfc\u00a0 \ubc29\ubc95\uc744\u00a0\uc120\ud0dd\ud569\ub2c8\ub2e4. (\uccab\ubc88\uc9f8\u00a0\ud589\uc744\u00a0\ub418\ub3cc\ub824\u00a0\uc8fc\ub294\u00a0\ucd5c\uc18c\uc758\u00a0\uc790\uc6d0\u00a0\uc0ac\uc6a9)<\/p>\n<p>&nbsp;<\/p>\n<p>\/*+ RULE *\/<\/p>\n<p>explicitly chooses rule-based optimization for a statement block<\/p>\n<p>\ubb38\u00a0\ube14\ub85d\uc744\u00a0\uc704\ud558\uc5ec, rule-based \ucd5c\uc801\ud654\ub97c\u00a0\uace0\ub974\ub294<\/p>\n<p>&nbsp;<\/p>\n<p><strong>&lt;Access Methods &#8211; \uc811\uadfc\u00a0\ubc29\ubc95&gt;<\/strong><\/p>\n<p>&nbsp;<\/p>\n<p>\/*+ AND_EQUAL(table index) *\/<\/p>\n<p>explicitly chooses an execution plan that uses an access path that merges the scans on several single-column indexes<\/p>\n<p>\uadf8\ub9cc\ud07c\u00a0\uc2e4\ud589\u00a0\uacc4\ud68d\uc744\u00a0\uc120\ud0dd\ud569\ub2c8\ub2e4. \uadf8\ub9ac\uace0\u00a0\uc5ec\ub7ff\uc758\u00a0single-column \uc0c9\uc778\uc5d0\u00a0 \uadf8\u00a0scan\uc744\u00a0\ud569\ubcd1\ud558\ub294\u00a0\uc811\uadfc\u00a0\uacbd\ub85c\ub97c\u00a0\uc0ac\uc6a9\ud569\ub2c8\ub2e4.<\/p>\n<p>&nbsp;<\/p>\n<p>\/*+ CLUSTER(table) *\/<\/p>\n<p>explicitly chooses a cluster scan to access the specified table<\/p>\n<p>\uc120\ud0dd\ud569\ub2c8\ub2e4. \uadf8\ub9ac\uace0, \ud074\ub7ec\uc2a4\ud130\ub294\u00a0\uadf8\u00a0\uba85\uc2dc\ub41c\u00a0\ud14c\uc774\ube14\uc744\u00a0\uc811\uadfc\ud558\uae30\u00a0\uc704\ud574\u00a0\uc0b4\ud54d\ub2c8\ub2e4.<\/p>\n<p>&nbsp;<\/p>\n<p>\/*+ FULL(table) *\/<\/p>\n<p>explicitly chooses a full table scan for the specified table<\/p>\n<p>\uadf8\u00a0\uba85\uc2dc\ub41c\u00a0\ud14c\uc774\ube14\uc744\u00a0\uc704\ud558\uc5ec, \uc804\uccb4\u00a0\ud14c\uc774\ube14\u00a0scan\uc744\u00a0\uace0\ub974\ub294<\/p>\n<p>&nbsp;<\/p>\n<p>\/*+ HASH(table) *\/<\/p>\n<p>explicitly chooses a hash scan to access the specified table<\/p>\n<p>\uc120\ud0dd\ud569\ub2c8\ub2e4. \uadf8\ub9ac\uace0, \ud574\uc26c\ub294\u00a0\uadf8\u00a0\uba85\uc2dc\ub41c\u00a0\ud14c\uc774\ube14\uc744\u00a0\uc811\uadfc\ud558\uae30\u00a0\uc704\ud574\u00a0\uc6b4\uc728\uc744\u00a0\uc0b4\ud54d\ub2c8\ub2e4.<\/p>\n<p>&nbsp;<\/p>\n<p>\/*+ HASH_AJ(table) *\/<\/p>\n<p>transforms a NOT IN subquery into a hash antijoin to access the specified table<\/p>\n<p>\ubcc0\ud658, \uadf8\u00a0\uba85\uc2dc\ub41c\u00a0\ud14c\uc774\ube14\uc744\u00a0\uc811\uadfc\ud558\ub294\u00a0\ud574\uc26c\u00a0antijoin\uc73c\ub85c\uc758\u00a0NOT IN \ubd80\uc18d\u00a0\uc870\ud68c<\/p>\n<p>&nbsp;<\/p>\n<p>\/*+ HASH_SJ (table) *\/<\/p>\n<p>transforms a NOT IN subquery into a hash anti-join to access the specified table<\/p>\n<p>\ubcc0\ud658, \uadf8\u00a0\uba85\uc2dc\ub41c\u00a0\ud14c\uc774\ube14\uc744\u00a0\uc811\uadfc\ud558\ub294\u00a0\ud574\uc26c\u00a0anti-join\uc73c\ub85c\uc758\u00a0NOT IN \ubd80\uc18d\u00a0\uc870\ud68c<\/p>\n<p>&nbsp;<\/p>\n<p>\/*+ INDEX(table index) *\/<\/p>\n<p>explicitly chooses an index scan for the specified table<\/p>\n<p>\uadf8\u00a0\uba85\uc2dc\ub41c\u00a0\ud14c\uc774\ube14\uc744\u00a0\uc704\ud558\uc5ec, \uc0c9\uc778\u00a0scan\uc744\u00a0\uace0\ub974\ub294<\/p>\n<p>&nbsp;<\/p>\n<p>\/*+ INDEX_ASC(table index) *\/<\/p>\n<p>explicitly chooses an ascending-range index scan for the specified table<\/p>\n<p>\uadf8\u00a0\uba85\uc2dc\ub41c\u00a0\ud14c\uc774\ube14\uc744\u00a0\uc704\ud558\uc5ec, ascending-range \uc0c9\uc778\u00a0scan\uc744\u00a0\uace0\ub974\ub294<\/p>\n<p>&nbsp;<\/p>\n<p>\/*+ INDEX_COMBINE(table index) *\/<\/p>\n<p>If no indexes are given as arguments for the INDEX_COMBINE hint, the optimizer uses whatever Boolean combination of bitmap indexes has the best cost estimate. If particular indexes are given as arguments, the optimizer tries to use some Boolean combination of those particular bitmap indexes.<\/p>\n<p>\uc5b4\ub5a4\u00a0\uc0c9\uc778\ub3c4\u00a0INDEX_COMBINE \uc554\uc2dc\ub97c\u00a0\uc704\ud574\u00a0\uc778\uc218\ub85c\uc11c\u00a0\uc8fc\uc5b4\uc9c0\uc9c0\u00a0\uc54a\ub294\ub2e4\uba74, bitmap \uc0c9\uc778\uc758\u00a0\uacb0\ud569\uc774\u00a0\uc5b4\ub5a4\u00a0\ubd80\uc6b8\uc758\ub97c\u00a0\uac00\uc7a5\u00a0\uc88b\uc740\u00a0\uc218\ud589\u00a0\ub09c\uc774\ub3c4\u00a0\ud3c9\uac00\ub97c\u00a0\uac00\uc9c0\uace0\u00a0 \uc788\ub4e0\uc9c0\u00a0\ucd5c\uc801\uc790\ub294\u00a0\uc774\uc6a9\ud569\ub2c8\ub2e4. \ud2b9\ubcc4\ud55c\u00a0\uc0c9\uc778\uc774\u00a0\uc778\uc218\ub85c\uc11c\u00a0\uc8fc\uc5b4\uc9c4\ub2e4\uba74, \ucd5c\uc801\uc790\ub294\u00a0\uadf8\u00a0\ud2b9\ubcc4\ud55c\u00a0bitmap \uc0c9\uc778\uc758\u00a0\uba87\uba87\uc758\u00a0\ubd80\uc6b8\uc758\u00a0\uacb0\ud569\uc744\u00a0\uc0ac\uc6a9\ud558\ub824\uace0\u00a0\ub178\ub825\ud569\ub2c8\ub2e4.<\/p>\n<p>&nbsp;<\/p>\n<p>\/*+ INDEX_DESC(table index) *\/<\/p>\n<p>explicitly chooses a descending-range index scan for the specified table<\/p>\n<p>\uadf8\u00a0\uba85\uc2dc\ub41c\u00a0\ud14c\uc774\ube14\uc744\u00a0\uc704\ud558\uc5ec, descending-range \uc0c9\uc778\u00a0scan\uc744\u00a0\uace0\ub974\ub294<\/p>\n<p>&nbsp;<\/p>\n<p>\/*+ INDEX_FFS(table index) *\/<\/p>\n<p>causes a fast full index scan to be performed rather than a full table scan<\/p>\n<p>\ube60\ub978\u00a0\uc804\uccb4\u00a0\uc0c9\uc778\u00a0scan\uc774\u00a0\uc804\uccb4\u00a0\ud14c\uc774\ube14\u00a0scan\uc774\ub77c\uae30\ubcf4\ub2e4\ub294\u00a0\uc218\ud589\ub418\uac8c\u00a0\ud569\ub2c8\ub2e4.<\/p>\n<p>&nbsp;<\/p>\n<p>\/*+ MERGE_AJ (table) *\/<\/p>\n<p>transforms a NOT IN subquery into a merge anti-join to access the specified table<\/p>\n<p>\ubcc0\ud658, NOT IN \ubd80\uc18d\u00a0\uc870\ud68c, \uadf8\u00a0\uba85\uc2dc\ub41c\u00a0\ud14c\uc774\ube14\uc744\u00a0\uc811\uadfc\ud558\uae30\u00a0\uc704\ud574\u00a0anti-join\uc744\u00a0\ud569\ubcd1\ud569\ub2c8\ub2e4.<\/p>\n<p>&nbsp;<\/p>\n<p>\/*+ MERGE_SJ (table) *\/<\/p>\n<p>transforms a correlated EXISTS subquery into a merge semi-join to access the specified table<\/p>\n<p>\ubcc0\ud658, \uad00\ub828\ub41c\u00a0EXISTS \ubd80\uc18d\u00a0\uc870\ud68c, \uc811\uadfc\uc73c\ub85c\u00a0semi-join\uc744\u00a0\ud569\ubcd1\ud569\ub2c8\ub2e4, \uadf8\u00a0\uba85\uc2dc\ub41c\u00a0\ud14c\uc774\ube14<\/p>\n<p>&nbsp;<\/p>\n<p>\/*+ ROWID(table) *\/<\/p>\n<p>explicitly chooses a table scan by ROWID for the specified table<\/p>\n<p>\uadf8\u00a0\uba85\uc2dc\ub41c\u00a0\ud14c\uc774\ube14\uc744\u00a0\uc704\ud558\uc5ec, ROWID\uc5d0\u00a0\uc758\ud574\u00a0\ud14c\uc774\ube14\u00a0scan\uc744\u00a0\uace0\ub974\ub294<\/p>\n<p>&nbsp;<\/p>\n<p>\/*+ USE_CONCAT *\/<\/p>\n<p>forces combined OR conditions in the WHERE clause of a query to be transformed into a compound query using the UNION ALL set operator<\/p>\n<p>\ud798\uc740\u00a0\uc9c8\uc758\uc758\u00a0WHERE \ubb38\uc808\uc5d0\u00a0\uc788\ub294\u00a0UNION ALL \uc9d1\ud569\u00a0\uc5f0\uc0b0\uc790\ub97c\u00a0\uc0ac\uc6a9\ud558\ub294\u00a0\ud569\uc131\uc758\u00a0 \uc9c8\uc758\ub85c\u00a0\ubcc0\ud615\ub418\ub294\u00a0OR \uc870\uac74\uc744\u00a0\ud569\ucce4\uc2b5\ub2c8\ub2e4.<\/p>\n<p>&nbsp;<\/p>\n<p><strong>&lt;Join Orders&gt;<\/strong><\/p>\n<p>&nbsp;<\/p>\n<p>\/*+ ORDERED *\/<\/p>\n<p>causes Oracle to join tables in the order in which they appear in the FROM clause<\/p>\n<p>\uc624\ub77c\ud074\uc774\u00a0\uc5b4\ub290\u00a0\uac83\uc5d0\u00a0\uc21c\uc11c\ub85c\u00a0\ud14c\uc774\ube14\uc744\u00a0\uacb0\ud569\uc2dc\ud0a4\uac8c\u00a0\ud569\ub2c8\ub2e4.<\/p>\n<p>&nbsp;<\/p>\n<p>\/*+ STAR *\/<\/p>\n<p>forces the large table to be joined last using a nested-loops join on the index<\/p>\n<p>\ud070\u00a0\uc788\ub294\u00a0\ud14c\uc774\ube14\uc774\u00a0\ucd5c\uc885\u00a0\uc0ac\uc6a9\/\ud68c\uc804\uc728\uc5d0\u00a0nested-loops\ub97c\u00a0\uacb0\ud569\uc2dc\ud0a8\u00a0\ud798\uc740\u00a0\uadf8\u00a0\uc0c9\uc778\uc5d0\u00a0\uacb0\ud569\ud569\ub2c8\ub2e4.<\/p>\n<p>&nbsp;<\/p>\n<p><strong>&lt;Join Operations&gt;<\/strong><\/p>\n<p>&nbsp;<\/p>\n<p>\/*+ DRIVING_SITE (table) *\/<\/p>\n<p>forces query execution to be done at a different site from that selected by Oracle<\/p>\n<p>\ud798\uc740\u00a0\uadf8\uac83\uacfc\u00a0\ub2e4\ub978\u00a0\uc624\ub77c\ud074\uc5d0\u00a0\uc758\ud574\u00a0\uc120\ud0dd\ub41c\u00a0\uc0ac\uc774\ud2b8\uc5d0\u00a0\ub418\ub294\u00a0\uc2e4\ud589\uc744\u00a0\uc9c8\uc758\ud569\ub2c8\ub2e4.<\/p>\n<p>&nbsp;<\/p>\n<p>\/*+ USE_HASH (table) *\/<\/p>\n<p>causes Oracle to join each specified table with another row source with a hash join<\/p>\n<p>\uc624\ub77c\ud074\uc774\u00a0\ud14c\uc774\ube14\uc774\u00a0\ub2e4\ub978\u00a0\ud589\u00a0\uc790\uc6d0\uc73c\ub85c\u00a0\ud574\uc26c\u00a0\uc811\ud569\uc73c\ub85c\u00a0\uba85\uc2dc\ub418\uba74\uc11c\u00a0\uac01\uc790\uc640\u00a0\ud569\uce58\uac8c\u00a0\ud569\ub2c8\ub2e4.<\/p>\n<p>&nbsp;<\/p>\n<p>\/*+ USE_MERGE (table) *\/<\/p>\n<p>causes Oracle to join each specified table with another row source with a sort-merge join<\/p>\n<p>\uc624\ub77c\ud074\uc774\u00a0\ud14c\uc774\ube14\uc774\u00a0\ub2e4\ub978\u00a0\ud589\u00a0\uc790\uc6d0\uc73c\ub85c\u00a0sort-merge \uc811\ud569\uc73c\ub85c\u00a0\uba85\uc2dc\ub418\uba74\uc11c\u00a0\uac01\uc790\uc640\u00a0\ud569\uce58\uac8c\u00a0\ud569\ub2c8\ub2e4.<\/p>\n<p>&nbsp;<\/p>\n<p>\/*+ USE_NL (table) *\/<\/p>\n<p>causes Oracle to join each specified table to another row source with a nested-loops join using the specified table as the inner table<\/p>\n<p>\uc624\ub77c\ud074\uc774\u00a0\uadf8\u00a0\uba85\uc2dc\ub41c\u00a0\ud14c\uc774\ube14\uc744\u00a0\uadf8\u00a0\uc548\uc758\u00a0\ud14c\uc774\ube14\ub85c\u00a0\uc0ac\uc6a9\ud558\ub294\u00a0nested-loops \uc811\ud569 \uacfc\u00a0\uac01\uc790\uc640\u00a0\ub2e4\ub978\u00a0\ud589\u00a0\uc790\uc6d0\uc5d0\u00a0\ub300\ud55c\u00a0\uba85\uc2dc\ub41c\u00a0\ud14c\uc774\ube14\uc744\u00a0\ud569\uce58\uac8c\u00a0\ud569\ub2c8\ub2e4.<\/p>\n<p>&nbsp;<\/p>\n<p><strong>&lt;Parallel Execution&gt;<\/strong><\/p>\n<p>&nbsp;<\/p>\n<p>\/*+ APPEND *\/ , \/*+ NOAPPEND *\/<\/p>\n<p>specifies that data is simply appended (or not) to a table; existing free space is not used. Use these hints only following the INSERT keyword.<\/p>\n<p>\ub370\uc774\ud0c0\uac00\u00a0\ud14c\uc774\ube14\ub85c\u00a0\ub2e8\uc21c\ud788\u00a0\ub367\ubd99\uc5ec\uc9c4\ub2e4\ub294\u00a0\u00a0(or not)\uac83\u00a0\uba85\uc2dc\ud569\ub2c8\ub2e4; \ubb34\ub8cc\uc778\u00a0 \ud604\uc874\ud558\ub294\u00a0\uc601\uc5ed\uc740\u00a0\uc0ac\uc6a9\ub418\uc9c0\u00a0\uc54a\uc2b5\ub2c8\ub2e4. \ub2e8\uc9c0\u00a0\uadf8\u00a0\uc0bd\uc785\u00a0\ud0a4\u00a0\ud575\uc2ec\uc5b4\ub97c\u00a0\ub530\ub974\ub294\u00a0\uc774\u00a0\uc554\uc2dc\ub97c\u00a0\uc0ac\uc6a9\ud558\uc2dc\uc624.<\/p>\n<p>&nbsp;<\/p>\n<p>\/*+ NOPARALLEL(table) *\/<\/p>\n<p>disables parallel scanning of a table, even if the table was created with a PARALLEL clause<\/p>\n<p>\uadf8\u00a0\ud14c\uc774\ube14\uc774\u00a0PARALLEL \ubb38\uc808\ub85c\u00a0\uc0c8\ub85c\u00a0\ub9cc\ub4e4\uc5b4\uc84c\ub2e4\uba74\u00a0\ud14c\uc774\ube14\uc758\u00a0\ud3c9\ud589\uc758\u00a0\uc21c\ucc28\u00a0\uac80\uc0c9\uc744\u00a0 \ubb34\ub2a5\ud558\uac8c\u00a0\ub9cc\ub4ed\ub2c8\ub2e4.<\/p>\n<p>&nbsp;<\/p>\n<p>\/*+ PARALLEL(table, instances) *\/<\/p>\n<p>allows you to specify the desired number of concurrent slave processes that can be used for the operation. DELETE, INSERT, and UPDATE operations are considered for parallelization only if the session is in a PARALLEL DML enabled mode. (Use ALTER SESSION PARALLEL DML to<\/p>\n<p>enter this mode.)<\/p>\n<p>\ub2f9\uc2e0\uc774\u00a0\uadf8\u00a0\uc5f0\uc0b0\uc744\u00a0\uc704\ud574\u00a0\uc0ac\uc6a9\ub420\u00a0\uc218\u00a0\uc788\ub294\u00a0\ub3d9\uc2dc\uc758\u00a0\uc2ac\ub808\uc774\ube0c(slave) \ud504\ub85c\uc138\uc2a4\uc758\u00a0\uc694\uad6c\ub41c\u00a0\uc218\ub97c\u00a0\uba85\uc2dc\ud558\ub294\u00a0\uac83\uc744\u00a0\ud5c8\ub77d\ud569\ub2c8\ub2e4. \uadf8\u00a0\uc138\uc158\uc774\u00a0\uac00\ub2a5\ud558\uac8c\u00a0\ub41c\u00a0PARALLEL DML\uc5d0\u00a0\ubaa8\ub4dc\ub97c\u00a0\uc788\ub2e4\uba74, DELETE, INSERT, UPDATE \uc5f0\uc0b0\uc740\u00a0\ub2e8\uc9c0\u00a0parallelization\uc5d0\u00a0\ub300\ud574\u00a0\uace0\ub824\ub429\ub2c8\ub2e4. (\uc0ac\uc6a9\uc740\u00a0\uc774\u00a0\ubaa8\ub4dc\uc5d0\u00a0\ub4e4\uc5b4\uac00\uae30<\/p>\n<p>\uc704\ud574\u00a0\ud3c9\ud589\uc758\u00a0\uc138\uc158\u00a0DML\uc744\u00a0\ubcc0\uacbd\ud569\ub2c8\ub2e4.)<\/p>\n<p>&nbsp;<\/p>\n<p>\/*+ PARALLEL_INDEX *\/<\/p>\n<p>allows you to parallelize fast full index scan for partitioned\u00a0 and nonpartitioned indexes that have the PARALLEL attribute parallelize<\/p>\n<p>\uc5d0\u00a0\ub2f9\uc2e0\uc5d0\uac8c\u00a0\ube60\ub978\u00a0\uac00\ub4dd\ud55c\u00a0\uc0c9\uc778\u00a0scan\uc744\u00a0\ud5c8\ub77d\ud569\ub2c8\ub2e4. \uadf8\ub7f0\ub370, \uadf8\uac83\uc740\u00a0PARALLEL \uc18d\uc131\uc744\u00a0\uac00\uc9c0\uace0\u00a0\uc788\ub294\u00a0\uc0c9\uc778\uc744\u00a0\ubd84\ud560\ud588\uace0\u00a0nonpartitioned\ud588\uc2b5\ub2c8\ub2e4.<\/p>\n<p>&nbsp;<\/p>\n<p>\/*+ NOPARALLEL_INDEX *\/<\/p>\n<p>overrides a PARALLEL attribute setting on an index<\/p>\n<p>\ubcd1\ub82c\uc774\u00a0\uc0c9\uc778\uc744\u00a0\ub098\uc544\uac00\ub294\u00a0\uac83\uc744\u00a0\uc18d\ud558\uac8c\u00a0\ud558\ub294\u00a0\ub300\uccb4<\/p>\n<p>&nbsp;<\/p>\n<p>&lt;Other Hints&gt;<\/p>\n<p>\/*+ CACHE *\/<\/p>\n<p>specifies that the blocks retrieved for the table in the hint are placed at the most recently used end of the LRU list in the buffer cache when a full table scan is performed<\/p>\n<p>\uadf8\u00a0\ube14\ub85d\uc774\u00a0\ucc3e\uc544\uc11c\u00a0\uac00\uc838\uc654\ub2e4\ub294\u00a0\uac83\uc744\u00a0\uba85\uc2dc\ud569\ub2c8\ub2e4. \uadf8\ub9ac\uace0\u00a0\uadf8\u00a0\ud14c\uc774\ube14\uc744\u00a0\uc704\ud574\u00a0\uadf8\u00a0\uc554\uc2dc\uc5d0\u00a0\ub193\uc5ec\uc9d1\ub2c8\ub2e4. \uadf8\ub7f0\ub370, \uadf8\uac83\uc740\u00a0\uac00\uc7a5\u00a0\uc694\uc988\uc74c\u00a0\uc0ac\uc6a9\ub41c\u00a0\uc5b8\uc81c\u00a0\uadf8\u00a0\ubc84\ud37c\u00a0\uce90\uc26c, \uac00\ub4dd\ud55c\u00a0\ud14c\uc774\ube14\u00a0scan\uc5d0\u00a0\uc788\ub294\u00a0LRU \ub9ac\uc2a4\ud2b8\uc758\u00a0\ub05d\uc785\ub2c8\ub2e4. \uc218\ud589\ub429\ub2c8\ub2e4.<\/p>\n<p>&nbsp;<\/p>\n<p>\/*+ NOCACHE *\/<\/p>\n<p>specifies that the blocks retrieved for this table are placed at the least recently used end of the LRU list in the buffer cache when a full table scan is performed<\/p>\n<p>\uadf8\u00a0\uba85\uc2dc\ud569\ub2c8\ub2e4. \uadf8\ub9ac\uace0, \uadf8\u00a0\ube14\ub85d\uc740\u00a0\uc774\u00a0\ud14c\uc774\ube14\uc744\u00a0\uc704\ud574\u00a0\uac80\uc0c9\ub418\uba74\uc11c\u00a0\uc694\uc988\uc74c\u00a0\uc0ac\uc6a9\ub41c\u00a0\uc5b8\uc81c\u00a0\uadf8\u00a0\ubc84\ud37c\u00a0\uce90\uc26c, \uac00\ub4dd\ud55c\u00a0\ud14c\uc774\ube14\u00a0scan\uc5d0\u00a0\uc788\ub294\u00a0LRU \ub9ac\uc2a4\ud2b8\uc758\u00a0\uac00\uc7a5\u00a0\uc791\uc740\u00a0\ub05d\uc5d0\u00a0\ub193\uc5ec\uc9d1\ub2c8\ub2e4. \uc218\ud589\ub429\ub2c8\ub2e4.<\/p>\n<p>&nbsp;<\/p>\n<p>\/*+ MERGE (table) *\/<\/p>\n<p>causes Oracle to evaluate complex views or subqueries before the surrounding query<\/p>\n<p>\uc624\ub77c\ud074\uc774\u00a0\uadf8\u00a0\ub458\ub7ec\uc2f8\ub294\u00a0\uc9c8\uc758\u00a0\uc804\uc5d0\u00a0\ubcf5\uc7a1\ud55c\u00a0\ubdf0\ub098\u00a0\ubd80\uc18d\u00a0\uc870\ud68c\ub97c\u00a0\ud3c9\uac00\ud558\uac8c\u00a0\ud569\ub2c8\ub2e4.<\/p>\n<p>&nbsp;<\/p>\n<p>\/*+ NO_MERGE (table) *\/<\/p>\n<p>causes Oracle not to merge mergeable views<\/p>\n<p>\uc624\ub77c\ud074\uc774\u00a0mergeable \ubdf0\ub97c\u00a0\ud569\ubcd1\ud558\uc9c0\u00a0\uc54a\uac8c\u00a0\ud558\uc9c0\u00a0\uc54a\uc2b5\ub2c8\ub2e4<\/p>\n<p>&nbsp;<\/p>\n<p>\/*+ PUSH_JOIN_PRED (table) *\/<\/p>\n<p>causes the optimizer to evaluate, on a cost basis, whether or not to push individual join predicates into the view<\/p>\n<p>\uac1c\uac1c\u00a0\uc811\ud569\uc744\u00a0\ubbf8\ub294\u00a0\uac83\uc774\u00a0\uadf8\u00a0\ubdf0\u00a0\uc548\uc73c\ub85c\u00a0\ub2e8\uc815\u00a0\ud558\ub4e0\u00a0\uac04\uc5d0\u00a0\ube44\uc6a9\u00a0\ubc29\uc2dd\uc73c\ub85c\u00a0\ucd5c\uc801\uc790\uac00\u00a0\ud3c9\uac00\ud558\uac8c\u00a0\ud569\ub2c8\ub2e4.<\/p>\n<p>&nbsp;<\/p>\n<p>\/*+ NO_PUSH_JOIN_PRED (table) *\/<\/p>\n<p>Prevents pushing of a join predicate into the view<\/p>\n<p>\uc811\ud569\u00a0\uc220\ubd80\u00a0\uc911\uc5d0\uc11c\u00a0\uadf8\u00a0\ubdf0\ub85c\u00a0\ubc00\uba74\uc11c, \ub9c9\ub294<\/p>\n<p>&nbsp;<\/p>\n<p>\/*+ PUSH_SUBQ *\/<\/p>\n<p>causes nonmerged subqueries to be evaluated at the earliest possible place in the execution plan<\/p>\n<p>\uc6d0\uc778\uc740\u00a0\uadf8\u00a0\uc2e4\ud589\u00a0\uacc4\ud68d\uc5d0\uc11c\uc758\u00a0\uac00\uc7a5\u00a0\uc774\ub978\u00a0\uac00\ub2a5\ud55c\u00a0\uc7a5\uc18c\uc5d0\u00a0\ud3c9\uac00\ub418\ub294\u00a0\ubd80\uc18d\u00a0\uc870\ud68c\ub97c\u00a0nonmerged \ud588\uc2b5\ub2c8\ub2e4.<\/p>\n<p>&nbsp;<\/p>\n<p>\/*+ STAR_TRANSFORMATION *\/<\/p>\n<p>makes the optimizer use the best plan in which the transformation has been used.<\/p>\n<p>\ucd5c\uc801\uc790\uac00\u00a0\uadf8\u00a0\ubcc0\ud615\uc774\u00a0\uc0ac\uc6a9\ub41c\u00a0\uac00\uc7a5\u00a0\uc88b\uc740\u00a0\uacc4\ud68d\uc744\u00a0\uc0ac\uc6a9\ud558\ub294\u00a0\uc81c\uc791<\/p>\n","protected":false},"excerpt":{"rendered":"<p>&lt;Optimization Approaches and Goals &#8211; Optimization \u00a0\uc811\uadfc\uacfc\u00a0\ubaa9\uc801&gt; &nbsp; \/*+ ALL_ROWS *\/ explicitly chooses the cost-based approach to optimize a statement block with a goal of best throughput (that is, minimum total resource consumption) \uac00\uc7a5\u00a0\uc88b\uc740\u00a0\ub2e8\uc704\u00a0\ucc98\ub9ac\ub7c9\uc758\u00a0\ubaa9\ud45c\ub85c\u00a0\ubb38\u00a0\ube14\ub85d\uc744\u00a0\ucd5c\uc801\ud654\ud558\uae30\u00a0\uc704\ud574\u00a0cost-based \uc811\uadfc\u00a0\ubc29\ubc95\uc744\u00a0\uc120\ud0dd\ud569\ub2c8\ub2e4. (\uc989, \uc804\uccb4\uc801\uc778\u00a0\ucd5c\uc18c\uc758\u00a0\uc790\uc6d0\u00a0\uc18c\ube44) &nbsp; \/*+ CHOOSE *\/ causes the optimizer to choose between the rule-based approach and the cost-based approach for [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":2877,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_bbp_topic_count":0,"_bbp_reply_count":0,"_bbp_total_topic_count":0,"_bbp_total_reply_count":0,"_bbp_voice_count":0,"_bbp_anonymous_reply_count":0,"_bbp_topic_count_hidden":0,"_bbp_reply_count_hidden":0,"_bbp_forum_subforum_count":0,"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"spay_email":""},"categories":[11],"tags":[955,229,231,954],"jetpack_featured_media_url":"https:\/\/i0.wp.com\/haisins.synology.me\/wordpress\/wp-content\/uploads\/2018\/02\/how_do_i1.png?fit=936%2C756","amp_enabled":true,"_links":{"self":[{"href":"http:\/\/haisins.synology.me\/wordpress\/index.php?rest_route=\/wp\/v2\/posts\/2890"}],"collection":[{"href":"http:\/\/haisins.synology.me\/wordpress\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/haisins.synology.me\/wordpress\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/haisins.synology.me\/wordpress\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/haisins.synology.me\/wordpress\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=2890"}],"version-history":[{"count":1,"href":"http:\/\/haisins.synology.me\/wordpress\/index.php?rest_route=\/wp\/v2\/posts\/2890\/revisions"}],"predecessor-version":[{"id":2891,"href":"http:\/\/haisins.synology.me\/wordpress\/index.php?rest_route=\/wp\/v2\/posts\/2890\/revisions\/2891"}],"wp:featuredmedia":[{"embeddable":true,"href":"http:\/\/haisins.synology.me\/wordpress\/index.php?rest_route=\/wp\/v2\/media\/2877"}],"wp:attachment":[{"href":"http:\/\/haisins.synology.me\/wordpress\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=2890"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/haisins.synology.me\/wordpress\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=2890"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/haisins.synology.me\/wordpress\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=2890"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}