OracleʹÓõÄhintsµ÷Õû»úÖÆÒ»Ö±ºÜ¸´ÔÓ£¬Oracle Technical Network¶ÔʹÓÃhintsµ÷ÕûOracle SQLµÄ¹ý³ÌÓкܺõÄÈ«ÃæÆÀÊö¡£¸ù¾Ý¶Ô10gÊý¾Ý¿âµÄ½éÉÜ£¬¿ÉʹÓøü¶àеÄoptimizer hintsÀ´¿ØÖÆÓÅ»¯ÐÐΪ¡£ÏÖÔÚÈÃÎÒÃÇѸËÙÁ˽âÒ»ÏÂÕâЩǿ´óµÄÐÂhints:
spread_min_analysis
ʹÓÃÕâÒ»hint£¬Äã¿ÉÒÔºöÂÔһЩ¹ØÓÚÈçÏêϸµÄ¹ØϵÒÀÀµÍ¼·ÖÎöµÈµç×Ó±í¸ñµÄ±àÒëʱ¼äÓÅ»¯¹æÔò¡£ÆäËûµÄһЩÓÅ»¯£¬Èç´´½¨¹ýÂËÒÔÓÐÑ¡ÔñÐԵĶ¨Î»µç×Ó±í¸ñ·ÃÎʽṹ²¢ÏÞÖÆÐÞ¶©¹æÔòµÈ£¬µÃµ½Á˼ÌÐøʹÓá£
ÓÉÓÚÔÚ¹æÔòÊý·Ç³£´óµÄÇé¿öÏ£¬µç×Ó±í¸ñ·ÖÎö»áºÜ³¤¡£ÕâÒ»Ìáʾ¿ÉÒÔ°ïÖúÎÒÃǼõÉÙÓɴ˲úÉúµÄÊýÒÔ°ÙСʱ¼ÆµÄ±àÒëʱ¼ä¡£
ÀýÈç:
SELECT /*+ SPREAD_MIN_ANALYSIS */ ...
spread_no_analysis
ͨ¹ýÕâÒ»hint£¬¿ÉÒÔʹÎÞµç×Ó±í¸ñ·ÖÎö³ÉΪ¿ÉÄÜ¡£Í¬Ñù£¬Ê¹ÓÃÕâÒ»hint¿ÉÒÔºöÂÔÐÞ¶©¹æÔòºÍ¹ýÂ˲úÉú¡£Èç¹û´æÔÚÒ»µç×Ó±í¸ñ·ÖÎö£¬±àÒëʱ¼ä¿ÉÒÔ±»¼õÉÙµ½×îµÍ³Ì¶È¡£
ÀýÈç:
SELECT /*+ SPREAD_NO_ANALYSIS */ ...
use_nl_with_index
ÕâÏîhintʹCBOͨ¹ýǶÌ×Ñ»·°ÑÌض¨µÄ±í¸ñ¼ÓÈëµ½ÁíÒ»ÔʼÐС£Ö»ÓÐÔÚÒÔÏÂÇé¿öÖУ¬Ëü²ÅʹÓÃÌض¨±í¸ñ×÷ΪÄÚ²¿±í¸ñ:Èç¹ûûÓÐÖ¸¶¨±êÇ©£¬CBO±ØÐë¿ÉÒÔʹÓÃһЩ±êÇ©£¬ÇÒÕâЩ±êÇ©ÖÁÉÙÓÐÒ»¸ö×÷ΪË÷Òý¼üÖµ¼ÓÈëÅжÏ;·´Ö®£¬CBO±ØÐëÄܹ»Ê¹ÓÃÖÁÉÙÓÐÒ»¸ö×÷ΪË÷Òý¼üÖµ¼ÓÈëÅжϵıêÇ©¡£
ÀýÈç:
SELECT /*+ USE_NL_WITH_INDEX (polrecpolrind) */ ...
CARDINALITY
´Ëhint¶¨ÒåÁ˶ÔÓɲéѯ»ò²éѯ²¿·Ö·µ»ØµÄ»ùÊýµÄÆÀ¼Û¡£×¢ÒâÈç¹ûûÓж¨Òå±í¸ñ£¬»ùÊýÊÇÓÉÕû¸ö²éѯËù·µ»ØµÄ×ÜÐÐÊý¡£
ÀýÈç:
SELECT /*+ CARDINALITY ( [tablespec] card ) */
SELECTIVITY
´Ëhint¶¨ÒåÁ˶Բéѯ»ò²éѯ²¿·ÖÑ¡ÔñÐÔµÄÆÀ¼Û¡£Èç¹ûÖ»¶¨ÒåÁËÒ»¸ö±í¸ñ£¬Ñ¡ÔñÐÔÊÇÔÚËù¶¨Òå±í¸ñÀïÂú×ãËùÓе¥Ò»±í¸ñÅжϵÄÐв¿·Ö¡£Èç¹û¶¨ÒåÁËһϵÁбí¸ñ£¬Ñ¡ÔñÐÔÊÇÖ¸Ôںϲ¢ÒÔÈκÎ˳ÐòÂú×ãËùÓпÉÓÃÅжϵÄÈ«²¿±í¸ñºó£¬ËùµÃ½á¹ûÖеÄÐв¿·Ö¡£
ÀýÈç:
SELECT /*+ SELECTIVITY ( [tablespec] sel ) */
È»¶ø£¬×¢ÒâÈç¹ûhints CARDINALITY ºÍ SELECTIVITY¶¼¶¨ÒåÔÚͬÑùµÄÒ»Åú±í¸ñ£¬¶þÕ߶¼»á±»ºöÂÔ¡£
no_use_nl
Hint no_use_nlʹCBOÖ´ÐÐÑ»·Ç¶Ì×£¬Í¨¹ý°ÑÖ¸¶¨±í¸ñ×÷ΪÄÚ²¿±í¸ñ£¬°Ñÿ¸öÖ¸¶¨±í¸ñÁ¬½Óµ½ÁíÒ»ÔʼÐС£Í¨¹ýÕâÒ»hint£¬Ö»ÓÐhash joinºÍsort-merge joins»áΪָ¶¨±í¸ñËù¿¼ÂÇ¡£
ÀýÈç:
SELECT /*+ NO_USE_NL ( employees ) */ ...
no_use_merge
´ËhintʹCBOͨ¹ý°ÑÖ¸¶¨±í¸ñ×÷ΪÄÚ²¿±í¸ñµÄ·½Ê½£¬¾Ü¾øsort-merge°Ñÿ¸öÖ¸¶¨±í¸ñ¼ÓÈëµ½ÁíÒ»ÔʼÐС£
ÀýÈç:
SELECT /*+ NO_USE_MERGE ( employees dept ) */ ...
no_use_hash
´ËhintʹCBOͨ¹ý°ÑÖ¸¶¨±í¸ñ×÷ΪÄÚ²¿±í¸ñµÄ·½Ê½£¬¾Ü¾øhash joins°Ñÿ¸öÖ¸¶¨±í¸ñ¼ÓÈëµ½ÁíÒ»ÔʼÐС£
ÀýÈç:
SELECT /*+ NO_USE_HASH ( employees dept ) */ ...
no_index_ffs
´ËhintʹCBO¾Ü¾ø¶ÔÖ¸¶¨±í¸ñµÄÖ¸¶¨±êÇ©½øÐÐfast full-index scan¡£
Syntax: /*+ NO_INDEX_FFS ( tablespecindexspec ) */
no_index_ss
´ËhintʹCBO¾Ü¾ø¶ÔÖ¸¶¨±í¸ñµÄÖ¸¶¨±êÇ©½øÐÐskip scan¡£
Syntax: /*+ NO_INDEX_SS (tablespecindexspec ) */
no_star_transformation
´ËhintʹCBOºöÂÔstar ѯÎÊÐÅÏ¢¡£
Syntax: /*+ NO_STAR_TRANSFORMATION */
index_ss
´ËhintÃ÷È·µØΪָ¶¨±í¸ñÑ¡Ôñindex skip scan¡£Èç¹ûÓï¾äʹÓÃindex range scan£¬Oracle½«ÒÔ¶ÔÆäË÷ÒýÖµµÄÉýÐòÅÅÁÐÀ´¼ì²éË÷ÒýÈë¿Ú¡£ÔÚ±»·Ö¸îµÄË÷ÒýÖУ¬Æä½á¹ûΪ¶Ôÿ¸ö²¿·ÖÄÚ²¿µÄÉýÐòÅÅÁС£
Syntax: /*+ INDEX_SS (tablespecindexspec) */
index_ss_asc
´ËhintÃ÷È·µØΪָ¶¨±í¸ñÑ¡Ôñindex skip scan¡£Èç¹ûÓï¾äʹÓÃindex range scan£¬Oracle½«ÒÔ¶ÔÆäË÷ÒýÖµµÄÉýÐòÅÅÁÐÀ´¼ì²éË÷ÒýÈë¿Ú¡£ÔÚ±»·Ö¸îµÄË÷ÒýÖУ¬Æä½á¹ûΪ¶Ôÿ¸ö²¿·ÖÄÚ²¿µÄÉýÐòÅÅÁС£
Syntax: /*+ INDEX_SS_ASC (tablespecindexspec) */
index_ss_desc
´ËhintÃ÷ȷΪָ¶¨±í¸ñÑ¡Ôñindex skip scan¡£Èç¹ûÓï¾äʹÓÃindex range scan£¬Oracle½«ÒÔ¶ÔÆäË÷ÒýÖµµÄ½µÐòÅÅÁÐÀ´¼ì²éË÷ÒýÈë¿Ú¡£ÔÚ±»·Ö¸îµÄË÷ÒýÖУ¬Æä½á¹ûΪ¶Ôÿ¸ö²¿·ÖÄÚ²¿µÄ½µÐòÅÅÁС£
Syntax: /*+ INDEX_SS_DESC (tablespecindexspec) */
cpu_costing
´ËhintΪSQLÓï¾ä´ò¿ªCPU costing¡£ÕâÊǶÔÓÅ»¯Æ÷µÄĬÈÏÆÀ¹Àģʽ¡£ÓÅ»¯Æ÷ÆÀ¹Àµ±Ö´Ðиø¶¨²éѯʱ£¬Êý¾Ý¿âÐèÒªÔËÐеÄIO²Ù×÷Êý¡¢IO²Ù×÷ÖÖÀà¡¢ÒÔ¼°CPUÖÜÆÚÊý¡£
Syntax: /*+ CPU_COSTING (tablespecindexspec) */
no_cpu_costing
´ËhintΪSQLÓï¾ä¹Ø±ÕCPU costing¡£È»ºóCBOʹÓÃIO costģʽ£¬´ËģʽºöÂÔCPU»¨·Ñ£¬½ö²âÁ¿ÔÚsingle-block readsÖеÄËùÓÐÖ¸±ê¡£
Syntax: /*+ NO_CPU_COSTING */
Ëæ×ÅOracleÓÅ»¯Æ÷Ô½À´Ô½³ÉÊ죬Oracleר¼Ò±ØÐë²»¶ÏÔö¼Ó×Ô¼º¶Ôµ÷ÕûSQLÓï¾äµÄ¹¤¾ß´¢±¸¡£µ±È»£¬ÌÖÂÛËùÓи´ÔÓµÄOracle10g SQLÐÂhintsÔ¶Ô¶³¬³öÁ˱¾Îĵķ¶Î§£¬Äã¿ÉÒÔ´ÓMike AultµÄÐÂÊéOracle Database 10g New FeaturesÖлñµÃ¹ØÓÚOracle10gµÄ¸ü¶àÐÅÏ¢¡£