Ò׽ؽØÍ¼Èí¼þ¡¢µ¥Îļþ¡¢Ãâ°²×°¡¢´¿ÂÌÉ«¡¢½ö160KB

OracleÓÅ»¯Æ÷µÄÓÅ»¯·½Ê½ºÍÓÅ»¯Ä£Ê½

OracleÔÚÖ´ÐÐÒ»¸öSQL֮ǰ,Ê×ÏÈÒª·ÖÎöÒ»ÏÂÓï¾äµÄÖ´Ðмƻ®,È»ºóÔÙ°´Ö´Ðмƻ®È¥Ö´ÐС£·ÖÎöÓï¾äµÄÖ´Ðмƻ®µÄ¹¤×÷ÊÇÓÉÓÅ»¯Æ÷(Optimizer)À´Íê³ÉµÄ¡£²»Í¬µÄÇé¿ö,Ò»ÌõSQL¿ÉÄÜÓжàÖÖÖ´Ðмƻ®,µ«ÔÚijһʱµã,Ò»¶¨Ö»ÓÐÒ»ÖÖÖ´Ðмƻ®ÊÇ×îÓŵÄ,»¨·Ñʱ¼äÊÇ×îÉٵġ£ÏàÐÅÄãÒ»¶¨»áÓÃPl/sql Developer¡¢ToadµÈ¹¤¾ßÈ¥¿´Ò»¸öÓï¾äµÄÖ´Ðмƻ®,²»¹ýÄã¿ÉÄܶÔRule¡¢Choose¡¢First rows¡¢All rowsÕ⼸ÏîÓÐÒÉÎÊ,ÒòΪÎÒµ±³õÒ²ÊÇÕâÑùµÄ,ÄÇʱÎÒÒ²ÒÉ»óΪʲôѡÁËÒÔÉϵIJ»Í¬µÄÏî,Ö´Ðмƻ®¾Í±äÁË?
1¡¢ÓÅ»¯Æ÷µÄÓÅ»¯·½Ê½  
OracleµÄÓÅ»¯Æ÷¹²ÓÐÁ½ÖÖµÄÓÅ»¯·½Ê½,¼´»ùÓÚ¹æÔòµÄÓÅ»¯·½Ê½(Rule-Based Optimization,¼ò³ÆÎªRBO)ºÍ»ùÓÚ´ú¼ÛµÄÓÅ»¯·½Ê½(Cost-Based Optimization,¼ò³ÆÎªCBO)¡£  
A¡¢RBO·½Ê½£ºÓÅ»¯Æ÷ÔÚ·ÖÎöSQLÓï¾äʱ,Ëù×ñÑ­µÄÊÇOracleÄÚ²¿Ô¤¶¨µÄһЩ¹æÔò¡£±ÈÈçÎÒÃdz£¼ûµÄ,µ±Ò»¸öwhere×Ó¾äÖеÄÒ»ÁÐÓÐË÷Òýʱȥ×ßË÷Òý¡£  
B¡¢CBO·½Ê½£ºÒÀ´ÊÒå¿ÉÖª,ËüÊÇ¿´Óï¾äµÄ´ú¼Û(Cost)ÁË,ÕâÀïµÄ´ú¼ÛÖ÷ÒªÖ¸CpuºÍÄÚ´æ¡£ÓÅ»¯Æ÷ÔÚÅжÏÊÇ·ñÓÃÕâÖÖ·½Ê½Ê±,Ö÷Òª²ÎÕÕµÄÊÇ±í¼°Ë÷ÒýµÄͳ¼ÆÐÅÏ¢¡£Í³¼ÆÐÅÏ¢¸ø³ö±íµÄ´óС ¡¢ÓÐÉÙÐС¢Ã¿Ðеij¤¶ÈµÈÐÅÏ¢¡£ÕâЩͳ¼ÆÐÅÏ¢Æð³õÔÚ¿âÄÚÊÇûÓеÄ,ÊÇÄãÔÚ×öanalyzeºó²Å³öÏÖµÄ,ºÜ¶àµÄʱºî¹ýÆÚͳ¼ÆÐÅÏ¢»áÁîÓÅ»¯Æ÷×ö³öÒ»¸ö´íÎóµÄÖ´Ðмƻ®,ÒòЩÎÒÃÇÓ¦¼°Ê±¸üÐÂÕâЩÐÅÏ¢¡£ÔÚOracle8¼°ÒÔºóµÄ°æ±¾,OracleÁÐÍÆ¼öÓÃCBOµÄ·½Ê½¡£  
ÎÒÃÇÒªÃ÷ÁË,²»Ò»¶¨×ßË÷Òý¾ÍÊÇÓÅµÄ ,±ÈÈçÒ»¸ö±íÖ»ÓÐÁ½ÐÐÊý¾Ý,Ò»´ÎIO¾Í¿ÉÒÔÍê³ÉÈ«±íµÄ¼ìË÷,¶ø´Ëʱ×ßË÷ÒýʱÔòÐèÒªÁ½´ÎIO,Õâʱ¶ÔÕâ¸ö±í×öÈ«±íɨÃè(full table scan)ÊÇ×îºÃµÄ¡£  
2¡¢ÓÅ»¯Æ÷µÄÓÅ»¯Ä£Ê½(Optermizer Mode)  
ÓÅ»¯Ä£Ê½°üÀ¨Rule,Choose,First rows,All rowsÕâËÄÖÖ·½Ê½,Ò²¾ÍÊÇÎÒÃÇÒÔÉÏËùÌá¼°µÄ¡£ÈçÏÂÎÒ½âÊÍһϣº
Rule:²»Óöà˵,¼´×ß»ùÓÚ¹æÔòµÄ·½Ê½¡£
Choolse:ÕâÊÇÎÒÃÇÓ¦¹Û×¢µÄ,ĬÈϵÄÇé¿öÏÂOracleÓõıãÊÇÕâÖÖ·½Ê½¡£Ö¸µÄÊǵ±Ò»¸ö±í»ò»òË÷ÒýÓÐͳ¼ÆÐÅÏ¢,Ôò×ßCBOµÄ·½Ê½,Èç¹û±í»òË÷Òýûͳ¼ÆÐÅÏ¢,±íÓÖ²»ÊÇÌØ±ðµÄС,¶øÇÒÏàÓ¦µÄÁÐÓÐË÷Òýʱ,ÄÇô¾Í×ßË÷Òý,×ßRBOµÄ·½Ê½¡£  
First Rows:ËüÓëChoose·½Ê½ÊÇÀàËÆµÄ,Ëù²»Í¬µÄÊǵ±Ò»¸ö±íÓÐͳ¼ÆÐÅϢʱ,Ëü½«ÊÇÒÔ×î¿ìµÄ·½Ê½·µ»Ø²éѯµÄ×îÏȵļ¸ÐÐ,´Ó×ÜÌåÉϼõÉÙÁËÏìӦʱ¼ä¡£  
All Rows:Ò²¾ÍÊÇÎÒÃÇËù˵µÄCostµÄ·½Ê½,µ±Ò»¸ö±íÓÐͳ¼ÆÐÅϢʱ,Ëü½«ÒÔ×î¿ìµÄ·½Ê½·µ»Ø±íµÄËùÓеÄÐÐ,´Ó×ÜÌåÉÏÌá¸ß²éѯµÄÍÌÍÂÁ¿¡£Ã»ÓÐͳ¼ÆÐÅÏ¢Ôò×ß»ùÓÚ¹æÔòµÄ·½Ê½


Ïà¹ØÎĵµ£º

OracleÒì³£×ܽá

PL/SQL µÄÒì³£(Ô¤¶¨ÒåÒì³£)
2009-08-13 20:24
Òì³£Ãû³Æ                                         & ......

oracleѧϰ±Ê¼Ç(¶þ)·ÖÏíÖ®´æ´¢¹ý³ÌǶÌ×ÓαêÀý×Ó

create or replace procedure aa1 is
v_aa varchar2(20);
v_bb varchar2(20);
va_aa varchar2(20);
va_bb varchar2(20);
va_number_aa number;
message varchar2(60);
CURSOR aas is
SELECT DISTINCT aa.aa, aa.bb from aa;
CURSOR aaas is
SELECT DISTINCT aaa.aa, aaa.bb from aaa where aaa.aa = v_aa ......

Oracle ÏÔʽÓαê

--------------------ÏÔʽÓαê
--²éѯÊý¾Ý
select * from employees;
--¶¨Ò岿·Ö
declare
       --ÉùÃ÷Óαê
       cursor mycur is select * from employees where employee_id<120;
       --¶¨ÒåÒ»¸ö¼¯ºÏ±äÁ¿ÓÃÓ ......

Oracleº¯Êý

CLOB:ÓÃÀ´´æ´¢µ¥×Ö½ÚµÄ×Ö·ûÊý¾Ý
NCLOB:ÓÃÀ´´æ´¢¶à×Ö½ÚµÄ×Ö·ûÊý¾Ý
BLOB£ºÓÃÓÚ´æ´¢¶þ½øÖÆÊý¾Ý
BFILE:´æ´¢ÔÚÎļþÖеĶþ½øÖÆÊý¾Ý£¬Õâ¸öÎļþÖеÄÊý¾ÝÖ»Äܱ»Ö»¶Á·Ã¡£µ«¸ÃÎļþ²»°üº¬ÔÚÊý¾Ý¿âÄÚ¡£
CLOB£¬NCLOB£¬BLOB¶¼ÊÇÄÚ²¿µÄLOBÀàÐÍ£¬×4G£¬Ã»ÓÐLONGÖ»ÄÜÓÐÒ»ÁеÄÏÞÖÆ¡£
select lpad(to_number(nvl(max(classid),to_number( ......

Oracle 10G ÖеĻØÊÕÕ¾

»ØÊÕÕ¾,´ÓÔ­ÀíÉÏÀ´Ëµ¾ÍÊÇÒ»¸öÊý¾Ý×Öµä±í,·ÅÖÃÓû§DropµôµÄÊý¾Ý¿â¶ÔÏóÐÅÏ¢.Óû§½øÐÐDrop²Ù×÷µÄ¶ÔÏó²¢Ã»Óб»Êý¾Ý¿âɾ³ý,ÈÔÈ»»áÕ¼Óÿռä.³ý·ÇÊÇÓÉÓÚÓû§ÊÖ¹¤½øÐÐPurge»òÕßÒòΪ´æ´¢¿Õ¼ä²»¹»¶ø±»Êý¾Ý¿âÇåµô.Êý¾Ý¿âÓÐÁËÕâÑùµÄ¹¦ÄÜ,Äܹ»¼õÉٺܶ಻±ØÒªµÄÂé·³.¾­³£¿´µ½¿ª·¢ÈËÔ±Îó°Ñ±íɾ³ý,¼±¼±Ã¦Ã¦ÕÒDBAÀ´Ïë°ì·¨µÄÇé¿ö,ÏàÐÅ,Ëæ×Å10G ......
© 2009 ej38.com All Rights Reserved. ¹ØÓÚE½¡ÍøÁªÏµÎÒÃÇ | Õ¾µãµØÍ¼ | ¸ÓICP±¸09004571ºÅ