Ö´ÐУ¨Execution£©
Ò»µ©²éѯÓÅ»¯Æ÷Ñ¡ÔñÁËÒ»¸öÖ´Ðмƻ®£¬ÇëÇó£¨request£©¾Í¿ÉÒÔ¿ªÊ¼Ö´ÐÐÁË¡£Ö´Ðмƻ®»á±»·Òë³ÉΪһ¿Ãʵ¼ÊµÄÖ´ÐÐÊ÷
ÿ¸öÊ÷½Úµã¶¼ÊÇÒ»¸ö²Ù×÷·û£¬ËùÓвÙ×÷·û¶¼»áʵÏÖÒ»¸öÓÐ3¸ö·½·¨µÄ³éÏó½Ó¿Ú£¬·Ö±ðÊÇopen(),
next(), close()
Èç¹û¸óÏÂÊÇC#³ÌÐòÔ±»òÕßÊÇJAVA³ÌÐòÔ±£¬Ò»¶¨²»ÄÑÀí½âʲôÊǽӿڣ¬Ê²Ã´ÊÇ·½·¨£¬Ê²Ã´ÊdzéÏó½Ó¿Ú
MSDNÀïÓÐÏà¹ØµÄ×ÊÁÏ£ºShowplan Âß¼ÔËËã·ûºÍÎïÀíÔËËã·û²Î¿¼
²éѯ¼Æ»®ÊÇÓÉÎïÀíÔËËã·û×é³ÉµÄÒ»¸öÊ÷£¨Ö´ÐÐÊ÷£©
Âß¼ÔËËã·û
Âß¼ÔËËã·ûÃèÊöÁËÓÃÓÚ´¦ÀíÓï¾äµÄ¹ØÏµ´úÊý²Ù×÷¡£ »»ÑÔÖ®£¬Âß¼ÔËËã·û´Ó¸ÅÄîÉÏÃèÊöÁËÐèÒªÖ´ÐÐÄÄЩ²Ù×÷¡£
ÎïÀíÔËËã·û
ÎïÀíÔËËã·ûʵʩÓÉÂß¼ÔËËã·ûÃèÊöµÄ²Ù×÷¡£ ÿ¸öÎïÀíÔËËã·û¶¼ÊÇÒ»¸öÖ´ÐÐijÏî²Ù×÷µÄ¶ÔÏó»òÀý³Ì¡£
ÀýÈ磬ijЩÎïÀíÔËËã·û¿É·ÃÎÊ±í¡¢Ë÷Òý»òÊÓͼÖеÄÁлòÐС£ ÆäËûÎïÀíÔËËã·ûÖ´ÐÐÆäËû²Ù×÷£¬Èç¼ÆËã¡¢¾ÛºÏ¡¢Êý¾ÝÍêÕûÐÔ¼ì²é»òÁª½Ó¡£
ÎïÀíÔËËã·û¾ßÓÐÓëÆä¹ØÁªµÄ¿ªÏú¡£
ÎïÀíÔËËã·û³õʼ»¯¡¢ÊÕ¼¯Êý¾Ý£¬È»ºó¹Ø±Õ¡£ ¾ßÌåÀ´½²£¬ÎïÀíÔËËã·û¿ÉÒÔÏìÓ¦ÏÂÁÐÈýÖÖ·½·¨µ÷Óãº
Init()£ºInit() ·½·¨Ê¹ÎïÀíÔËËã·û³õʼ»¯×ÔÉí²¢ÉèÖÃËùÓÐÐèÒªµÄÊý¾Ý½á¹¹¡£
¾¡¹ÜÒ»¸öÎïÀíÔËËã·ûͨ³£Ö»½ÓÊÕÒ»´Î Init() µ÷Ó㬵«Ò²¿ÉÒÔ½ÓÊÕÐí¶à´Îµ÷Óá£
GetNext()£ºGetNext() ·½·¨Ê¹ÎïÀíÔËËã·û»ñµÃÊý¾ÝµÄµÚÒ»ÐлòºóÐøÐС£
ÎïÀíÔËËã·û¿ÉÒÔ²»½ÓÊÕ GetNext() µ÷Óã¬Ò²¿ÉÒÔ½ÓÊÕÐí¶à´Îµ÷Óá£
Close()£ºClose() ·½·¨Ê¹ÎïÀíÔËËã·ûÖ´ÐÐijЩÇå³ý²Ù×÷£¬È»ºó¹Ø±Õ¡£
Ò»¸öÎïÀíÔËËã·ûÖ»½ÓÊÕÒ»¸ö Close() µ÷Óá£
GetNext() ·½·¨·µ»ØÒ»¸öÊý¾ÝÐУ¬ËüµÄµ÷ÓôÎÊý×÷Ϊ ActualRows
ÏÔʾÔÚʹÓà SET STATISTICS PROFILE ON »ò SET STATISTICS XML
ON Éú³ÉµÄÏÔʾ¼Æ»®Êä³öÖС£ ÓйØÕâЩ SET Ñ¡ÏîµÄÏêϸÐÅÏ¢£¬Çë²ÎÔÄ SET STATISTICS
PROFILE (Transact-SQL) ºÍ SET STATISTICS XML (Transact-SQL)¡£

ÎÄÖÐ˵µÄ²Ù×÷·ûʵ¼ÊÉÏÖ¸µÄ¾ÍÊÇÎïÀíÔËËã·û£ºÈý¸ö·½·¨Ö¸µÄÊÇopen()=init()£¬next()=getnext()£¬close()=close()
ÿ¸öÎïÀíÔËËã·û¾ÍÊǵ÷ÓÃ×Ô¼ºµÄÈý¸ö·½·¨
ÔÚSQLSERVERÖ´ÐÐÇëÇóµÄ¹ý³ÌÖУ¬Ö´ÐÐÊ÷µÄ¸ù½Úµã»á²»¶ÏÑ»·µÄµ÷ÓÃopen£¨£©£¬È»ºóÖØ¸´µ÷ÓÃnext£¨£©Ö±µ½·µ»ØfalseÖµ
×îºóµ÷ÓÃclose£¨£©¡£Ê÷µÄ¸ù½ÚµãµÄÔËËã·û»áÒÀ´Îµ÷ÓÃËûµÄ×Ó½ÚµãµÄͬÑùµÄÔËËã·û£¬¶ø×Ó½ÚµãÓÖ»áÒÀ´Îµ÷ÓÃËûµÄ×Ó½ÚµãµÄͬÑùµÄÔËËã·û
Ò»Ö±µ÷ÓÃÏÂÈ¥¡£ÔÚÊ÷µÄÒ¶×Ó½ÚµãÒ»°ã¶¼»áÊǶÁÈ¡±íÊý¾Ý»ò±íË÷ÒýµÄÎïÀíÔËËã·û¡£¶øÖ´ÐÐÊ÷µÄÖмä½ÚµãÒ»°ã¶¼ÊÇһЩʵÏÖ²»Í¬Êý¾Ý²Ù×÷µÄÔËËã·û
ÀýÈ磺¹ýÂ˱íÊý¾Ý¡¢joinÁ¬½Ó¡¢¶ÔÊý¾ÝÅÅÐò¡£ÄÇЩʹÓò¢ÐеIJéѯ»áʹÓÃÒ»¸öÌØ±ðµÄÔËËã·û½Ð×ö£ºExchange
Oprators£¨½»»»²Ù×÷£©
½»»»²Ù×÷ÔËËã·ûÔÚÖ´ÐеĹý³ÌÖлáʹÓöàÏß³Ì(tasks =>
workers)£¬µ÷ÓÃÿ¸öÏß³ÌÈ¥Ö´ÐÐ×ÓÊ÷µÄÖ´Ðмƻ®£¬
È»ºó¾ÛºÏÕâЩÔËËã·ûµÄÊä³ö½á¹û£¬ÔÚÕâ¸ö¹ý³ÌÖлáʹÓõäÐ͵썶àÉú²úÕß¡¶-¡·Ò»¸öÏû·ÑÕßģʽ£©¡£
¹ØÓÚExchange Oprators£¨½»»»²Ù×÷£© ¿ÉÒԲο¼ÕâÆªÎÄÕ£ºSQL
Server 2000ÖеIJ¢Ðд¦ÀíºÍÖ´Ðмƻ®ÖеÄλͼÔËËã·û
ÎÒÃÇʹÓà SET STATISTICS PROFILE ON ¾Í¿ÉÒÔ¿´µ½Ö´ÐÐÊ÷£¬ÏÂÃæÊÇһЩÁеÄÃû³Æ£¬¸üÏêϸµÄ¾Í²»ËµÁË£¬ÍøÉÏÓкܶà×ÊÁÏ
NodeId£ºÊ÷½Úµã
Parent£º¸¸½Úµã
PhysicalOp£ºÎïÀíÔËËã·û
LogicalOp£ºÂß¼ÔËËã·û

ÕâÖÖÖ´ÐÐÊ÷µÄÖ´ÐÐÄ£ÐͲ»µ¥Ö»Ó¦ÓÃÓÚ²éѯ£¬²åÈ룬ɾ³ý£¬¸üеÄÖ´Ðж¼ÊÇͬÑùÀûÓÃÖ´ÐÐÊ÷À´Ö´ÐеÄ
²åÈë¼Ç¼¡¢É¾³ý¼Ç¼¡¢¸üмǼ¶¼»áÓÐÏàÓ¦µÄÔËËã·û



Ò»¸öÖ´ÐÐÊ÷ûÓÐ×ÓÊ÷µÄÇé¿ö

Ò»¸öÖ´ÐÐÊ÷¾ßÓÐ×ÓÊ÷µÄÇé¿ö


Èç¹ûÖ´ÐÐÊ÷¾ßÓÐ×ÓÊ÷£¬ËûµÄÖ´Ðз½Ê½Ò²ÊÇ´Ó×ÓÊ÷µÄÒ¶×ӽڵ㿪ʼִÐУ¬Ò»Ö±Ö´Ðе½Ê÷µÄ¸ù½Úµã
ÌØ±ðÒª½éÉÜһϣ¬ÕâЩÔËËã·ûÒ²ÓÐÍ£Ö¹-¼ÌÐøµÄÐÐÎªÌØÐÔ£¬Òâ˼ÊÇ˵³ý·ÇËûÃǵÄ×Ó½ÚµãÔËËã·ûÒѾÎüÊÕÍêËùÓеÄÊäÈ룬ËûÃDzÅÄܲúÉúÊäÈë
ÀýÈ磺ÅÅÐòÔËËã·û£¬ÅÅÐòÔËËã·ûÔÚ×î³õµ÷ÓÃnext£¨£©º¯ÊýµÄʱºò²»»á·µ»ØÈκνá¹ûÒòΪÕâʱºòËûµÄ×ӽڵ㻹ûÓжÁÈ¡ÍêËùÓÐÊý¾Ý£¬
ÕâʱºòÐèҪִֹͣÐÐnext£¨£©º¯Êý£¨Ã¿¸öÔËËã·û´´½¨³öÀ´¾Í»á²»Í£µ÷ÓÃnextº¯Êý£©£¬Ö±µ½ËûµÄ×Ó½Úµã¶ÁÈ¡ÍêËùÓÐÊý¾ÝËû²ÅÄܶÔÕâЩÊý¾Ý
½øÐÐÅÅÐò£¨¼ÌÐøµ÷ÓÃnext£¨£©º¯Êý£©£¬È¡³ö½á¹û¼¯²¢ÅÅÐò

Èç¹ûÊý¾ÝÒѾ»º´æÔÚÄÚ´æÀïÁË£¬SQLSERVER¾Í²»ÐèҪȥ´ÅÅÌÀïÈ¡Êý¾Ý£¬Ö±½ÓÔÚÄÚ´æÀïÈ¡Êý¾Ý£¬ÄÚ´æÀïµÄÕâ¿é¿Õ¼ä£¬
SQLSERVER¹Ù·½ÊõÓï½Ð£ºBuffer pool
¶øÔÚÄÚ´æÀﻺ´æÖ´Ðмƻ®µÄÕâ¿é¿Õ¼ä£¬SQLSERVER¹Ù·½ÊõÓï½Ð£ºPlan
Cache

Ö´ÐÐÄ£¿é£¨Ä£¿é»¯£©

½á¹û£¨Results£©
ÔÚÖ´ÐÐÍê±ÏÖ®ºó£¬SQLERVER»á½«½á¹û¼¯·µ»Ø¸ø¿Í»§¶ËÓ¦ÓóÌÐò
µ±Ö´Ðе½Ö´ÐÐÊ÷µÄ¸ù½ÚµãµÄʱºò£¬¸ù½Úµãͨ³£¸ºÔ𽫽á¹û¼¯Ð´Èëµ½ÍøÂ绺³åÇø£¨network
buffers£©
È»ºó½«ÕâЩ½á¹û¼¯·¢Ëͻؿͻ§¶Ë¡£Ò»¸öÍêÕûµÄ½á¹û¼¯»¹Ã»Óд´½¨Íê±Ï£¬Ò»²¿·ÖµÄ½á¹ûÊ×ÏÈ»á´æ·Åµ½ÖÐ¼ä´æ´¢£¨ÄÚ´æ»ò´ÅÅÌ£©
È»ºóÖð¶ÎÖð¶Î·¢Ë͸ø¿Í»§¶Ë£¬ÀýÈçÒ»¸öSQLÓï¾ä²éѯµÄ½á¹ûÐèÒª·µ»Ø10Ìõ¼Ç¼£¬ÓÐ3Ìõ¼Ç¼ÒѾÉú³ÉºÃÁË£¬¿ÉÒÔ·µ»Ø¸ø¿Í»§¶ËÁË
SQLSERVERÊ×ÏȽ«Õâ3Ìõ¼Ç¼·ÅÈëÖÐ¼ä´æ´¢£¨ÄÚ´æ»ò´ÅÅÌ£©£¬Ò²¿ÉÒÔ½ÐÍøÂ绺³åÇø£¬µÈ¿Í»§¶ËÀ´È¡×ßÕâ3Ìõ¼Ç¼£¬Èç´ËÀàÍÆ¡£
·µ»Ø½á¹û¼¯¸ø¿Í»§¶ËµÄʱºò£¬SQLSERVERÓõÄÊÇÍøÂçÁ÷¿ØÖÆÐÒé¡£
Èç¹û¿Í»§¶ËûÓлý¼«µØ½«ÕâЩ½á¹û¼¯È¡×ߣ¨ÀýÈçµ÷ÓÃSqlDataReader.Read£¨£©£©¡£×îÖջᵼÖÂÍøÂçÁ÷¿ØÖÆ×é¼þ²»µÃ²»×èÈû
½á¹û¼¯·¢ËͶ˲¢ÇÒ»á¹ÒÆð²éѯµÄÖ´ÐС£
Ö»ÓÐÍøÂçÁ÷¿ØÖÆ×é¼þе÷ºÍ»º½âÁËÍøÂç×ÊÔ´µÄÐèÇó£¨ÍøÂçûÓÐ×èÈû£©£¬²éѯ²Å»á»Ö¸´£¬²¢ÇÒ¼ÌÐøÉú³É½á¹û¼¯
²»ÖªµÀ´ó¼ÒÓÐûÓÐÓöµ½¹ýµÈ´ýÀàÐÍ£ºASYNC_NETWORK_IOµÄµÈ´ý

ÉÏͼÀ¿Í»§¶Ë¶þ¾ÍÒªµÈ´ý£¬ÔÚSQLSRVERÀï²éѯ¾Í»áÏÔʾASYNC_NETWORK_IOÀàÐ͵ĵȴý
ÓÐȤµÄÊÇ£¬OUTPUT²ÎÊýµÄ·µ»Ø£¬OUTPUT²ÎÊýµÄÖµ»á±»²åÈëµ½·µ»Ø¸ø¿Í»§¶ËµÄ½á¹û¼¯µÄÍøÂçÊý¾ÝÁ÷ÖС£
µ±ÇëÇóÍê³ÉµÄʱºò£¬OUTPUT²ÎÊýÖµÖ»ÄÜÔÚ²éѯִÐеÄ×îºóдµ½½á¹û¼¯ÖУ¬Õâ¾ÍÊÇΪʲ÷áOUTPUT²ÎÊýÖµ
Ö»Óе±ËùÓеĽá¹û¼¯¶¼·µ»ØÁ˲ÅÄܼì²éOUTPUT²ÎÊýµÄÖµ


²éѯִÐйý³ÌÖÐÒª¸³ÓèµÄÄڴ棨Query Execution Memory
Grant£©
һЩÔËËã·ûÐèÒª¹Ì¶¨µÄÄÚ´æÈ¥Ö´ÐÐËûÃǵŤ×÷¡£ÅÅÐòÔËËã·ûΪÁ˽øÐÐÅÅÐòÐèÒªÄÚ´æÈ¥´æ´¢ÊäÈëµ½ÅÅÐòÔËËã·ûµÄÊý¾Ý
Hash joinºÍhash¾ÛºÏ±ØÐ뽨Á¢´óÐ͵Ähash±íÈ¥Ö´ÐÐËûÃǵŤ×÷¡£Ö´Ðмƻ®ÖªµÀÄÇЩδÍê³ÉµÄÔËËã·ûÐèÒª¶àÉÙÄÚ´æ
¸ù¾ÝÔËËã·ûÀàÐÍ£¬Ô¤¹ÀµÄÐмǼ£¬ÔËËã·û±ØÐëÒª´¦Àíͳ¼ÆÐÅÏ¢Ìṩ¸øËûµÄ±íÖеÄ×ֶεĴóС¡£
ÄÇЩÔÚÖ´Ðмƻ®ÀïµÄÔËËã·ûËùÐèÒªµÄ×ܵÄÄÚ´æÎÒÃÇͨ³£³ÆÎªÄڴ渳Óè¡£
ÊÔÏëһϣ¬µ±·Ç³£¶àµÄ²¢·¢²éѯ±»Ö´ÐеÄʱºò£¬ÒòΪ´óÁ¿µÄ°º¹óµÄÔËËã·û£¨ÕâЩÔËËã·ûÒ»°ã¶¼ÐèÒªºÜ¶àÄڴ棬ËùÒÔ³ÆÖ®Îª°º¹óµÄ£©
ÐèÒªÇëÇóÄڴ棬ÔÚͬһʱ¼äÀïÃæËûÃÇÄܹ»Óþ¡¼ÆËã»úµÄÄÚ´æ¡£
ΪÁË×èÖ¹ÕâÖÖÇé¿öµÄ·¢Éú£¬SQLSERVERʹÓÃÒ»ÖֽС°×ÊÔ´ÐźÅÁ¿¡±µÄ¶«Î÷¡£Õâ¸ö¶«Î÷Äܹ»È·±£ÕýÔÚÖ´ÐеIJéѯµÄ×ÜÄÚ´æ·ÖÅä²»»á³¬¹ý
µ±Ç°¼ÆËã»úÖеÄÄÚ´æ×ܺ͡£µ±×ܵÄÄÚ´æ·ÖÅä¾Í¿ìºÄ¾¡µ±Ç°·þÎñÆ÷ÀïµÄ¿ÉÓÃÄÚ´æµÄʱºò£¬ÕýÔÚÖ´ÐеIJéѯ±ØÐëÒªµÈ´ýÄÇЩ¾Í¿ìÖ´ÐÐÍê±Ï
µÄ²éѯȥÊÍ·ÅËûÃÇÓµÓеÄÄÚ´æ¡£
Äú¿ÉÒÔ²éѯsys.dm_exec_query_memory_grantsÕâ¸öDMVÊÓͼÀ´»ñÈ¡µ±Ç°µÄÄÚ´æ·ÖÅ䣨ÇëÇóµÄÄڴ棬·ÖÅäÁ˵ÄÄڴ棩
µ±Ò»¸ö²éѯ±ØÐëÒªµÈ´ýÄÚ´æµÄ¸³Óè/·ÖÅ䣬ÔÚSQL PROFILERÀï¿ÉÒÔ¿´µ½Execution
Warnings ʼþÀàÐÍ
Execution Warnings ʼþÀàÐÍÖ¸³öÁ˵±SQLÓï¾ä»òÕß´æ´¢¹ý³ÌÖ´ÐеĹý³ÌÖеÄÄÚ´æ·ÖÅ侯¸æ
Õâ¸öʼþÀàÐÍÄܹ»¼àÊÓ±ØÐëÒªµÈ´ýÒ»Ãë»ò¸ü¶àÄÚ´æµÄijЩ²éѯ£¬»òÕß»ñÈ¡ÄÚ´æÊ§°ÜµÄ²éѯ
ÔÚSQL PROFILERÀһЩÓëÄÚ´æÓйصÄʼþÀàÐÍ
Exchange Spill ʼþÀàÐÍ
Sort Warnings ʼþÀàÐÍ£ºÅÅÐòµÄʱºòËùÐèÄÚ´æ²»×ã
Hash Warning ʼþÀàÐÍ
Ïà¹ØÓï¾ä
select * from sys.dm_exec_query_resource_semaphores
select * from sys.dm_exec_query_memory_grants
|



SELECT [session_id], 2 [request_id], 3 [start_time], 4 [status], 5 [command], 6 [wait_type], 7 [text_size], 8 [language] , 9 [transaction_isolation_level], 10 [row_count], 11 [granted_query_memory], 12 [executing_managed_code] 13 FROM sys.[dm_exec_requests] |

ÎÒÈçºÎÀûÓÃÕâЩÐÅÏ¢£¨How can I use all this
information£©
ÉÏÃæµÄÐÅÏ¢ÓпÉÄܰïÄú½â¾öperformance troubleshooting
problems£¨ÐÔÄÜÎÊÌ⣩
Ò»µ©ÄúÃ÷°×ÁËÄúµÄ¿Í»§¶ËÕýÔÚ·¢ËͶà¸öÇëÇóµ½SQLSERVER£¬SQLSERVER¶ËÕýÔÚ´´½¨¶à¸öÈÎÎñ£¨task£©È¥´¦Àí
Äú·¢¸øËûµÄÇëÇó£¬ÐÔÄܵÄÃÕÌâ¾Í¿ÉÒԺܼòµ¥µØ½â¾öÁË£ººÜ¶àʱºò£¬ÄúµÄÈÎÎñ²»ÊÇÕýÔÚÖ´ÐУ¨ÕýÔÚÕ¼ÁìCPU£©¾ÍÊÇ´¦ÓÚÕýÔڵȴý
ÿ´ÎµÈ´ý£¬SQLSERVER¶¼»áÒÀ¿¿ÄÚ²¿µÈ´ýͳ¼ÆÐÅϢȥÊÕ¼¯µÈ´ýµÄÐÅÏ¢£¨µÈ´ýʲôºÍµÈÁ˶à¾Ã£©¡£
ÀûÓÃÊÕ¼¯»ØÀ´µÄͳ¼ÆÐÅϢȥ½â¾öÐÔÄÜÆ¿¾±ÊǷdz£ºÃµÄ·½·¨
¸½ÉÏÁ½ÕÅÍêÕûµÄͼ


×ܽá
ÎÄÖкÃÏñÒÅ©ÁËScheduler
Scheduler
¶ÔÓÚÿ¸öÂß¼CPU£¬SQLSERVER»áÓÐÒ»¸öschedulerÓëÖ®¶ÔÓ¦£¬ÔÚSQL²ãÃæÉÏ´ú±íCPU¶ÔÏó£¬
Ö»ÓÐÄõ½schedulerËùÓÐȨµÄworker²ÅÄÜÔÚÕâ¸öÂß¼CPUÉÏÔËÐÐ

ÓÅ»¯£¨Optimization£©
¸Õ²Å˵µ½Ñ¡ÔñÒ»ÖÖÊý¾Ý·ÃÎÊ·¾¶£¨Ö´Ðмƻ®£©£¬ÏÖÔÚ¼ÌÐøËµÒ»¸öÇëÇó£¨request£©µÄÉúÃüÖÜÆÚµÄÏÂÒ»²½£ºÓÅ»¯
ÔÚSQLSERVERÀïÃæ£¬ÓÅ»¯Òâζ×Å´Ó¶à¸öÑ¡ÔñÌõ¼þÖÐÑ¡Ôñ×î¼ÑµÄÊý¾Ý·ÃÎÊ·¾¶¡£
¿¼ÂÇһϣ¬Èç¹ûÄãÓÐÒ»¸ö¼òµ¥µÄÉæ¼°µ½Á½¸ö±íµÄjoin²éѯ£¬Ã¿¸ö±í¶¼ÓжîÍâµÄË÷Òý£¬
ÕâÀï¾ÍÓÐ4ÖÖ¿ÉÑ¡µÄÖ´Ðз½°¸£¬È¥·ÃÎʱíÖеÄÊý¾Ý
ÒòΪÓÐÕâ÷á¶àµÄ¿ÉÑ¡·½°¸£¬²éѯ¸´ÔÓ¶ÈÒѾ±È½Ï¸ßÁË£¬Èç¹ûÕâʱºò±íÖеÄË÷Òý¼ÌÐøÔö¶àµÄ»°£¬²éѯ¸´ÔÓ¶ÈÓпÉÄÜÒÔÖ¸ÊýµÄ·½Ê½Ôö³¤
ÔÙ¼ÓÉÏJOINÁª½Ó±¾À´¾ÍÓÐÈýÖÖÁª½Ó·½Ê½£ºnested loops join¡¢merge
join¡¢hash join
¿ÉÏë¶øÖª£¬ÓÅ»¯Õâ¸öÃû´ÊÔÚSQLSERVERÀïÊǶàÃ´ÖØÒª£¬SQLSERVERʹÓÃÒ»¸ö²éѯÓÅ»¯Æ÷À´Ô¤¹ÀÕâÖмäÒªÏûºÄµÄʱ¼ä,IO,CPU
²éѯÓÅ»¯Æ÷»á¿¼ÂǸ÷ÖÖÖ´Ðз½°¸£¬SQLSERVER»á¾¡Á¦»ùÓÚÿÖÖÖ´Ðз½°¸µÄ¿ªÏúÈ¥×÷³öÆÀ¹À£¬È»ºó¾¡¿ÉÄÜÑ¡ÔñÒ»¸ö¿ªÏú×îµÍµÄ
Ö´Ðз½°¸¡£SQLSERVERÊ×ÏÈ»á¼ÆËãÔÚÏÖÓеıíÊý¾ÝÁ¿Ï¸÷ÖÖÖ´Ðз½°¸¸÷×ÔÐèÒª¶àÉٵĿªÏú¡£ÎªÁËÑ¡³öÒ»¸ö¿ªÏú×îµÍµÄÖ´Ðз½°¸£¬
SQLSERVERÐèÒªÖªµÀ×öÁª½ÓµÄÿÕűíµÄÊý¾ÝÁ¿ºÍ±íÀïÃæ¸÷¸ö×ֶεÄÊý¾ÝµÄ·Ö²¼£¬Õâ¾ÍÐèÒª¿¿Í³¼ÆÐÅÏ¢£¬
ÒòΪͳ¼ÆÐÅÏ¢±¾À´¾ÍÊÇÓÃÀ´Í³¼ÆÕâЩÊý¾ÝµÄ¡£ÁíÍâÒ»¸öÒª¿¼ÂǵÄÒòËØ¾ÍÊÇ£¬Ã¿ÖÖÖ´Ðз½°¸ËùÐèÒªµÄCPUÏûºÄºÍÄÚ´æÏûºÄ
×ÛºÏÒÔÉϸ÷ÖÖÒòËØ£¬SQLSRVER»áÔÚÿÖÖÖ´Ðз½°¸ÀïËã³öÒ»¸öcostÖµ
SQLSERVER»áÔÚÕâЩִÐз½°¸ÀïÑ¡³öÒ»¸öcostÖµ×îµÍµÄÖ´Ðз½°¸×÷ΪִÐмƻ®Ö´ÐÐ
´ó¼Ò¿´Ò»Ï£¬SQLSERVERÒª¶ÔÉÏÃæ¸÷ÖÖÒòËØ½øÐп¼ÂÇ£¬ÕâÀÂÇÊÇÐèҪʱ¼äµÄ£¬ËùÒÔΪʲ÷áSQLSERVER
ÐèÒª½«Ö´Ðмƻ®»º´æµ½ÄÚ´æÀïÒԱ㽫À´¼ÌÐøÊ¹ÓÃÕâ¸öÖ´Ðмƻ®£¬¾ÍÊÇΪÁ˽ÚÊ¡±àÒëʱ¼ä
½«À´Í¬ÑùµÄÇëÇó½øÈëµ½SQLSERVER£¬²¢ÇÒÕâЩÇëÇóÄܹ»ÔÚCACHEÀïÕÒµ½Ò»¸öÒѾ±àÒëÁ˺ÍÓÅ»¯Á˵ÄÖ´Ðмƻ®
ËûÃǾÍÄÜÌø¹ý²éѯÓÅ»¯Æ÷µÄÓÅ»¯½×¶Î
ÕâÀïÒ»¶¨Òª×¢Ò⣺ͬÑùµÄÇëÇó½øÀ´SQLSERVERµÄʱºò£¬ÎÞÂÛCACHEÀïÓÐûÓпÉÒÔÖØÓõÄÖ´Ðмƻ®£¬SQLSERVER¶¼ÐèÒª
¶ÔÇëÇóÀïµÄSQLÓï¾ä½øÐнâÎö£¬ËùÒÔÎÒÉÏÃæ²Å˵£º¾ÍÊÇΪÁ˽ÚÊ¡±àÒëʱ¼ä
¶ø²»ÊÇ ¾ÍÊÇΪÁ˽ÚÊ¡½âÎö/±àÒëʱ¼ä


½âÊͺͱàÒëÄ£¿é£¨Ä£¿é»¯£©

|