°´¼üÅÌÉÏ·½Ïò¼ü ¡û »ò ¡ú ¿É¿ìËÙÉÏÏ·ҳ£¬°´¼üÅÌÉ쵀 Enter ¼ü¿É»Øµ½±¾ÊéĿ¼ҳ£¬°´¼üÅÌÉÏ·½Ïò¼ü ¡ü ¿É»Øµ½±¾Ò³¶¥²¿£¡
¡ª¡ª¡ª¡ªÎ´ÔĶÁÍꣿ¼ÓÈëÊéÇ©ÒѱãÏ´μÌÐøÔĶÁ£¡
ÎÒÃÇÏ£Íû´æ´¢¹ý³Ì·µ»ØÊ²Ã´½á¹û£¿ÔÙ¸¨ÒԴ󵨵Ä˼ά£¬Ë¼¿¼ÕâЩÎÊÌâµÄ´ð°¸£¬¾ÍÄܵõ½Ò»¸öÐÔ¡¡
ÄÜ´ó·ùÌáÉýµÄ´¦Àí·½Ê½ÁË¡£¡¡
×ܽ᣺¿¼Âǽâ¾ö·½°¸µÄϸ½Ú֮ǰ£¬ÏÈÕ¾µÃԶһЩ£¬°ÑÎÕ´ó¾Ö¡£¡¡
Ïȶ¨ÒåÎÊÌ⣬ÔÙ½â¾öÎÊÌâ¡¡
Problem¡¡Definition¡¡Before¡¡Solution¡¡
PPrroobblleemm¡¡DDeeffiinniittiioonn¡¡BBeeffoorree¡¡SSoolluuttiioonn¡¡
Ò»Öª°ë½âÊÇΣÏյġ£ÈËÃdz£ÔÚÌý˵ÁËм¼Êõ»òÌØÊâ¼¼ÊõÖ®ºó¡ª¡ªÓÐʱµÄÈ·ºÜÎüÒýÈË¡ª¡ªÊÔͼ²É¡¡
ÓÃËü×÷ΪеĽâ¾ö·½°¸¡£ÆÕͨ¿ª·¢ÕߺÍÉè¼ÆÊ¦Í¨³£»áÁ¢¼´²ÉÄÉÕâЩС°½â¾ö·½°¸¡±£¬Ö±µ½ºóÀ´²Å¡¡
·¢ÏÖËüÃÇ»á²úÉúÐí¶àºóÐøÎÊÌâ¡£¡¡
ÏֳɵĽâ¾ö·½°¸ÖУ¬·Ç¹æ·¶»¯Éè¼ÆÒýÈËעĿ¡£Éè¼ÆÒÁʼ£¬·Ç¹æ·¶»¯Éè¼ÆµÄÓµ»¤Õß¾ÍÌá³ö´Ë·½°¸£¬¡¡
ΪÁËѰÇó¡°ÐÔÄÜ¡±¶øÎÞÊÓ×îÖÕ½«»áÃæÁÙµÄÉý¼¶¶ñħ¡ª¡ª¶øÊÂʵÉÏ£¬ÔÚ¿ª·¢ÖÜÆÚÔçÆÚ£¬¸Ä½øÉè¼Æ£¨»ò¡¡
ѧϰÈçºÎʹÓÃjoin£©Ò²ÊÇÒ»¸ö²»´íµÄÑ¡Ôñ¡£×÷Ϊ·Ç¹æ·¶»¯Éè¼ÆµÄÒ»ÖÖÊֶΣ¬ÎﻯÊÓͼ£¨materialized¡¡
view£©³£±»ÈÏΪÊÇÁ鵤ÃîÒ©¡£ÎﻯÊÓͼÓÐʱ±»³ÆÎª¿ìÕÕ£¨snapshot£©£¬Õâ¸ö¸ü¼Óƽ³£µÄ´Ê¸üÐÎÏó¡¡
µØ·´Ó³Á˿ɱ¯µÄÊÂʵ£ºÎﻯÊÓͼÊÇijʱ¼äµãµÄÊý¾Ý¸±±¾¡£ÔÚûÓÐÆäËû°ì·¨Ê±£¬Õâ¸öÀíÂÛÉÏÔâµ½¡¡
ÖÊÒɵļ¼ÊõҲδ³¢²»ÖµµÃÒ»ÊÔ£¬½èÓÿ¨·ò¿¨£¨Franz¡¡Kafka£©µÄÒ»¾äÃûÑÔ£º¡°Âß¼³Ï¿É¹ó£¬Éú´æ¼Û¡¡
¸ü¸ß¡£¡±¡¡
È»¶ø£¬¾ø´ó²¿·ÖÎÊÌâ¶¼¿É½èÖú´«Í³¼¼ÊõÇÉÃî½â¾ö¡£Ê×ÏÈ£¬Ó¦Ñ§»á³ä·ÖÀûÓüòµ¥¡¢´«Í³µÄ¼¼Êõ¡£¡¡
Ö»ÓÐÍêÈ«ÕÆÎÕÁËÕâЩ¼¼Êõ£¬²ÅÄÜÕýÈ·ÆÀ¼ÛËüÃǵľÖÏÞÐÔ£¬×îÖÕ·¢ÏÖËüÏ൱ÓÚм¼ÊõµÄDZÔÚÓÅÊÆ¡¡
£¨Èç¹ûÓеϰ£©¡£¡¡
ËùÓм¼Êõ·½°¸£¬¶¼Ö»ÊÇÎÒÃǴﵽĿ±êµÄÊֶΡ£Ã»ÓоÑéµÄ¿ª·¢ÕßÎó°Ñм¼Êõ±¾Éíµ±³ÉÁËÄ¿±ê¡£¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Page¡¡10¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡
¶ÔÓÚÈÈÖÔÓÚ¼¼Êõ¡¢¹ýÓÚ¿´Öؼ¼ÊõµÄÈËÀ´Ëµ£¬´ËÎÊÌâ¾Í¸üΪÑÏÖØ¡£¡¡
×ܽ᣺ÏÈ´ò»ù´¡£¬ÔÙ¸Ïʱ÷Ö£º°ÚŪй¤¾ß֮ǰ£¬ÏȰÑÊÖÒÕѧºÃ¡£¡¡
Ö±½Ó²Ù×÷ʵ¼ÊÊý¾Ý¡¡
OperationsAgainst¡¡Actual¡¡Data¡¡
OOppeerraattiioonnssAAggaaiinnsstt¡¡AAccttuuaall¡¡DDaattaa¡¡
Ðí¶à¿ª·¢Õßϲ»¶½¨Á¢ÁÙʱ¹¤×÷±í£¨temporaryworktable£©£¬°ÑºóÐø´¦ÀíʹÓõĴóÁ¿Êý¾Ý·ÅÈëÆäÖУ¬¡¡
È»ºó¿ªÊ¼¡°Õýʽ¡±¹¤×÷¡£ÕâÖÖ·½·¨¹ãÊÜÖÊÒÉ£¬·´Ó³ÁË¡°Ìø³öÒµÎñÁ÷³Ìϸ½Ú¿¼ÂÇÎÊÌ⡱µÄÄÜÁ¦²»×ã¡£¡¡
¼Çס£¬ÓÀ¾Ã±í£¨permanent¡¡table£©¿ÉÒÔÉèÖ÷dz£¸´ÔӵĴ洢ѡÏÔÚµÚ5Õ½«ÌÖÂÛһЩ´æ´¢Ñ¡Ïî¡¡
µÄÉèÖã©£¬¶øÁÙʱ±í²»ÄÜ¡£ÁÙʱ±íµÄË÷Òý£¨Èç¹ûÓеϰ£©¿ÉÄܲ»ÊÇ×îÓŵģ¬Òò´Ë£¬²éѯÁÙʱ±íµÄ¡¡
Óï¾äЧÂʱÈÓÀ¾Ã±íµÄ²î¡£ÁíÍ⣬²éѯ֮ǰ±ØÈ»ÏÈΪÁÙʱ±íÌîÈëÊý¾Ý£¬Õâ×ÔȻҲ¶àÁËÒ»±Ê¶îÍâµÄ¡¡
¿ªÏú¡£¡¡
¾ÍËãʹÓÃÁÙʱ±íÓгä×ãÀíÓÉ£¬ÈôÊý¾ÝÁ¿´ó£¬Ò²¾ø²»ÄܰÑÓÀ¾Ã±íµ±×÷ÁÙʱ¹¤×÷±íÀ´Óá£ÎÊÌâÖ®Ò»¡¡
ÔÚÓÚͳ¼ÆÐÅÏ¢µÄ×Ô¶¯ÊÕ¼¯£ºÈôûÓÐʵʱÊÕ¼¯ÒªÇó£¬DBMSͨ³£»áÔÚ²»»î¶¯»ò»î¶¯ÉÙʱ½øÐÐͳ¼Æ¡¡
ÐÅÏ¢ÊÕ¼¯£¬¶øÕâʱ×÷ΪÁÙʱ¹¤×÷±í¿ÉÄÜΪ¿Õ£¬´Ó¶øÊ¹ÓÅ»¯Æ÷ÊÕµ½ÁËÍêÈ«´íÎóµÄÐÅÏ¢¡£ÕâЩ²»Õý¡¡
È·ÇÒÓÐÆ«²îµÄͳ¼ÆÐÅÏ¢¿ÉÄÜÔì³ÉÖ´Ðмƻ®£¨execution¡¡plan£©ÍêÈ«²»ºÏÀí£¬µ¼ÖÂÐÔÄÜϽµ¡£ËùÒÔ£¬¡¡
Èç¹ûÒ»¶¨ÒªÓÃÁÙʱ±í£¬Ó¦È·±£Êý¾Ý¿âÖªµÀÄÄЩ±íÊÇÁÙʱµÄ¡£¡¡
×ܽ᣺ÔÝʱ¹¤×÷±íÒâζ×ÅÒÔ²»Ì«ºÏÀíµÄ·½Ê½´æ´¢¸ü¶àÐÅÏ¢¡£¡¡
¡¡¡¡SQL¡¡
ÓÃSSQQLL´¦Àí¼¯ºÏ¡¡
Set¡¡Processing¡¡in¡¡SQL¡¡
SSeett¡¡PPrroocceessssiinngg¡¡iinn¡¡SSQQLL¡¡
SQL¡¡ÍêÈ«»ùÓÚ¼¯ºÏ£¨Set£©À´´¦ÀíÊý¾Ý¡£¶Ô´ó²¿·Ö¸üлòɾ³ý²Ù×÷¶øÑÔ¡¡¡ª¡ª¡¡Èç¹û²»ÊÇÕë¶ÔÕû¡¡
¸ö±íµÄ»°¡¡¡ª¡ª¡¡Äã±ØÐëÏȾ«È·¶¨Òå³öÒª´¦ÀíµÄ¼Ç¼µÄ¼¯ºÏ¡£ÕⶨÒåÁ˸ô¦ÀíµÄÁ£¶È¡¡
£¨granularity£©£¬¿ÉÄÜÊǶԴóÁ¿¼Ç¼µÄ´ÖÁ£¶È²Ù×÷£¬ÓпÉÄÜÊÇÖ»Ó°ÏìÉÙÊý¼Ç¼µÄϸÁ£¶È²Ù×÷¡£¡¡
½«Ò»´Î¡°´óÅúÁ¿Êý¾ÝµÄ´¦Àí¡±·Ö¸î³É¶à´Î¡°Ð¡¿é´¦Àí¡±ÊǸö»µÖ÷Ò⣬³ý·Ç¶ÔÊý¾Ý¿âµÄÐÞ¸ÄÌ«°º¹ó£¬¡¡
·ñÔò²»ÒªÊ¹Óã¬ÒòΪÕâÖÖ·½·¨¼«ÆäµÍЧ£º¡¡
£¨1£©Õ¼Óùý¶àµÄ¿Õ¼ä±£´æÔʼÊý¾Ý£¬ÒÔ±¸ÊÂÎñ£¨transaction£©»Ø¹ö£¨rollback£©Ö®Ð裻¡¡
£¨2£©ÍòÒ»ÐÞ¸Äʧ°Ü£¬»Ø¹öÏûºÄ¹ý³¤µÄʵ¼ù¡£¡¡
Ðí¶àÈËÈÏΪ£¬½øÐдó¹æÄ£Ð޸IJÙ×÷ʱ£¬Ó¦ÔÚ²Ù×÷Êý¾ÝµÄ´úÂëÖÐÓйæÂɵضలÅÅЩmitÃüÁî¡£¡¡
Æäʵ£¬Ñϸñ´Óʵ¼ù½Ç¶ÈÀ´½²£¬¡°´ÓÍ·¿ªÊ¼ÖØ×ö¡±±È¡°È·¶¨Ê§°Ü·¢ÉúµÄʱ¼äºÍλÖ㬽Ó×ÅÒÑÌá½»²¿·Ö¡¡
ÖØ×ö¡±ÒªÈÝÒ׵öࡢ¼òµ¥µÃ¶à¡¢Ò²¿ìµÃ¶à¡£¡¡
´¦ÀíÊý¾Ýʱ£¬Ó¦ÊÊÓ¦Êý¾Ý¿âµÄÎïÀíʵÏÖ¡£¿¼ÂÇÊÂÎñʧ°Üʱ»Ø¹öËùÐèÈÕÖ¾µÄ´óС£¬Èç¹ûҪΪundo¡¡
±£´æµÄÊý¾ÝÁ¿È·Êµ¾Þ´ó£¬»òÐíÓ¦¸Ã¿¼ÂÇÊý¾ÝÐÞ¸ÄµÄÆµÂÊÎÊÌâ¡£Ò²¾ÍÊÇ˵£¬½«´ó¹æÄ£µÄ¡°Ã¿Ô¸üС±£¬¡¡
¸ÄΪ¹æÄ£²»´óµÄ¡°Ã¿ÖܸüС±£¬ÉõÖÁ¸ÄΪ¹æÄ£¸üСµÄ¡°Ã¿ÈÕ¸üС±£¬»òÐíÊǸöÓÐЧ·½°¸¡£¡¡
×ܽ᣺¼¸Ç§¸öÓï¾ä£¬½èÖúÓα꣨cursor£©²»¶ÏÑ»·£¬ºÜÂý¡£»»³É¼¸¸öÓï¾ä£¬´¦ÀíͬÑùµÄÊý¾Ý£¬¡¡
»¹ÊǽÏÂý¡£»»³ÉÒ»¸öÓï¾ä£¬½â¾öÉÏÊöÎÊÌ⣬×îºÃ¡£¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Page¡¡11¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡SQL¡¡
¶¯×÷·á¸»µÄSSQQLLÓï¾ä¡¡
Action¡Packed¡¡SQL¡¡Statements¡¡
AAccttiioonn¡¡PPaacckkeedd¡¡SSQQLL¡¡SSttaatteemmeennttss¡¡
SQL¡¡²»Êǹý³ÌÐÔÓïÑÔ£¨procedurallanguage£©£¬¾¡¹ÜÒ²¿ÉÒÔ½«¹ý³ÌÂß¼£¨procedurallogic£©ÓÃÓÚSQL£¬¡¡
µ«±ØÐëСÐÄ¡£»ìÏýÉùÃ÷ÐÔ´¦Àí£¨declarative¡¡processing£©ºÍ¹ý³ÌÂß¼£¬×î³£¼ûµÄÀý×Ó³öÏÖÔÚÐèÒª¡¡
´ÓÊý¾Ý¿âÖÐÌáÈ¡Êý¾Ý¡¢È»ºó´¦ÀíÊý¾Ý¡¢È»ºóÔÙ²åÈëµ½Êý¾Ý¿âʱ¡£ÔÚÒ»¸ö³ÌÐò£¨»ò³ÌÐòÖеÄÒ»¸ö¡¡
º¯Êý£©½ÓÊÕµ½Ìض¨ÊäÈëÖµºó£¬ÈçÏÂÇé¿öÌ«³£¼ûÁË£ºÓÃÊäÈëÖµ´ÓÊý¾Ý¿âÖмìË÷µ½Ò»¸ö»ò¶à¸öÁíÍâ¡¡
µÄÊý¾ÝÖµ£¬È»ºó£¬½èÖúÑ»·»òÌõ¼þÂß¼£¨Í¨³£ÊÇ¡¡if¡£¡£¡£then¡¡¡£¡£¡£else£©½«Ò»Ð©Óï¾ä×éÖ¯ÆðÀ´£¬¶ÔÊý¡¡
¾Ý¿â½øÐвÙ×÷¡£´ó¶àÊýÇé¿öÏ£¬Ôì³ÉÉÏÊö´íÎó×ö·¨µÄÔÒòÓÐÈý£º¸ùÉîµÙ¹ÌµÄ»µÏ°¹ß¡¢SQL֪ʶ¡¡
µÄȱ·¦¡¢Ã¤´Ó¹¦ÄÜÐèÇ󹿏ñ˵Ã÷¡£Æäʵ£¬Ðí¶à¸´ÔÓ²Ù×÷ÍùÍù¿ÉÓÉÒ»Ìõ¡¡SQL¡¡Óï¾äÍê³É¡£Òò´Ë£¬¡¡
Èç¹ûÓû§ÌṩÁËһЩÊý¾ÝÖµ£¬¾¡Á¿²»Òª½«²Ù×÷·Ö½âΪ¶àÌõÌáÈ¡Öмä½á¹ûµÄÓï¾ä¡£¡¡
±ÜÃâÔÚ¡¡SQL¡¡ÖÐÒýÈë¡°¹ý³ÌÂß¼£¨procedurallogic£©¡±µÄÖ÷ÒªÔÒòÓжþ¡£¡¡
Êý¾Ý¿â·ÃÎÊ£¬×Ü»á¿ç¶à¸öÈí¼þ²ã£¬ÉõÖÁ°üÀ¨ÍøÂç·ÃÎÊ¡£¡¡
¼´Ê¹Ã»ÓÐÍøÂç·ÃÎÊ£¬Ò²»áÉæ¼°½ø³Ì¼äͨѶ£»¶îÍâµÄ´æÈ¡·ÃÎÊÒâζןü¶àµÄº¯Êýµ÷Óᢸü´óµÄ´ø¡¡
¿í£¬ÒÔ¼°¸ü³¤µÄµÈ´ýʱ¼ä¡£Ò»µ©ÕâЩµ÷ÓÃÒªÖØ¸´¶à´Î£¬Æä¶ÔÐÔÄܵÄÓ°Ïì¾Í·Ç³£¿É¹ÛÁË¡£¡¡
ÔÚSQLÖÐÒýÈë¹ý³ÌÂß¼£¬Òâζ×ÅÐÔÄܺÍά»¤ÎÊÌâÓ¦ÓÉÄãµÄ³ÌÐò³Ðµ£¡£¡¡
´ó¶àÊý¾Ý¿âϵͳ¶¼ÌṩÁ˳ÉÊìµÄËã·¨£¬À´´¦ÀíjoinµÈ²Ù×÷£¬À´ÓÅ»¯²éѯÒÔ»ñµÃ¸ü¸ßµÄЧÂÊ¡£»ùÓÚ¡¡
¿ªÏúµÄÓÅ»¯Æ÷£¨cost¡basedoptimizer£¬CBO£©ÊǺܸ´ÔÓµÄÈí¼þ£¬ËüÔçÒѲ»Ïñ¸ÕÍÆ³öʱÄÇÑùûʲô¡¡
ÓÃÁË£¬¶øÔڴ󲿷ÖÇé¿ö϶¼ÊǷdz£³öÉ«µÄ³ÉÊì²úÆ·ÁË£¬ÓÅÐãµÄCBO¡¡²éѯÓÅ»¯µÄЧÂʼ«¸ß¡£È»¶ø£¬¡¡
CBO¡¡ËùÄܸıäµÄÖ»ÓС¡SQL¡¡Óï¾ä¡£Èç¹ûÔÚÒ»Ìõµ¥¶ÀµÄSQLÓï¾äÖÐÍê³É¾¡¿ÉÄܶàµÄ²Ù×÷£¬ÄÇôÐÔ¡¡
ÄÜÓÅ»¯¿ÉÒÔ»¹ÓÉ¡¡DBMS¡¡ºËÐĸºÔð£¬ÄãµÄ³ÌÐò¿ÉÒÔ³ä·ÖÀûÓÃDBMSµÄËùÓÐÉý¼¶¡£Ò²¾ÍÊÇ˵£¬Î´¡¡
À´´ó²¿·Öά»¤¹¤×÷´Ó³ÌÐò¼ä½Ó×ªÒÆ¸øÁËDBMS¡¡¹©»õÉÌ¡£¡¡
µ±È»£¬¡°±ÜÃâÔÚ¡¡SQL¡¡ÖÐÒýÈë¹ý³ÌÂß¼¡±¹æÔòÒ²ÓÐÀýÍâ¡£ÓÐʱ¹ý³ÌÂ߼ȷʵÄܼӿ촦ÀíËÙ¶È£¬ÅÓ¡¡
´óµÄSQLÓï¾äδ±Ø×ÜÊǸßЧ¡£È»¶ø£¬¹ý³ÌÂß¼¼°ÆäÖ®ºóµÄ´¦ÀíÏàͬÊý¾ÝµÄÓï¾ä£¬¿ÉÒÔ±àдµ½Ò»¡¡
¸öµ¥¶ÀµÄ¡¡SQL¡¡Óï¾äÖУ¬CBO¡¡¾ÍÊÇÕâô×öµÄ£¬´Ó¶ø»ñµÃ×î¸ßЧµÄÖ´Ðз½Ê½¡£¡¡
×ܽ᣺¾¡¿ÉÄÜ¶àµØ°ÑÊÂÇé½»¸øÊý¾Ý¿âÓÅ»¯Æ÷À´´¦Àí¡£¡¡
³ä·ÖÀûÓÃÿ´ÎÊý¾Ý¿â·ÃÎÊ¡¡
Profitable¡¡Database¡¡Accesses¡¡
PPrrooffiittaabbllee¡¡DDaattaabbaassee¡¡AAcccceesssseess¡¡
Èç¹û¼Æ»®¹äºÃ¼¸¼ÒÉ̵꣬Äã»áÊ×ÏȾö¶¨ÔÚÿ¼ÒµêÂòÄÄЩ¶«Î÷¡£´ÓÕâÒ»¿ÌÆð£¬¾ÍÒª¼Æ»®°´ºÎÖÖ˳¡¡
Ðò¹ºÎï²ÅÄÜÉÙ×ßÔ©Í÷·¡£Ã¿¹äÒ»¼Òµê£¬¼Æ»®¶«Î÷¹ºÂòÍê±Ï£¬²Å¹äÏÂÒ»¼Ò¡£ÕâÊdz£Ê¶£¬µ«ÆäÖ