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

SQL Server 2005 ÖеķÖÇø±íºÍË÷Òý [2]

·ÖÇøµÄ·¢Õ¹ÀúÊ·
·ÖÇøµÄ¸ÅÄî¶Ô SQL Server À´Ëµ²¢²»Ä°Éú¡£Êµ¼ÊÉÏ£¬´Ë²úÆ·µÄÿ¸ö°æ±¾Öж¼¿ÉÒÔʵÏÖ²»Í¬ÐÎʽµÄ·ÖÇø¡£µ«ÊÇ£¬ÓÉÓÚûÓÐΪÁ˰ïÖúÓû§´´½¨ºÍά»¤·ÖÇø¼Ü¹¹¶ø×¨ÃÅÉè¼ÆÒ»Ð©¹¦ÄÜ£¬Òò´Ë·ÖÇøÒ»Ö±ÊÇÒ»¸öºÜ·±ËöµÄ¹ý³Ì£¬Ã»Óеõ½³ä·ÖµÄÀûÓ᣶øÇÒ£¬Óû§ºÍ¿ª·¢ÈËÔ±¶Ô´Ë¼Ü¹¹´æÔÚÎó½â£¨ÓÉÓÚÆäÊý¾Ý¿âÉè¼Æ±È½Ï¸´ÔÓ£©£¬µÍ¹ÀÁËËüµÄÓŵ㡣µ«ÊÇ£¬ÓÉÓÚ¸ÅÄîÖйÌÓеÄÖØÒªÐÔÄܸÄÉÆ£¬SQL Server 7.0 ¿ªÊ¼Í¨¹ý·ÖÇøÊÓͼʵÏÖ¸÷ÖÖ·ÖÇø·½Ê½£¬ÒÔ´ËÀ´¸Ä½øÕâÖÖ¹¦ÄÜ¡£ÏÖÔÚ£¬SQL Server 2005 Ϊͨ¹ý·ÖÇø±í¶Ô´óÐÍÊý¾Ý¼¯½øÐзÖÇøÓÖÂõ³öÁË×î´óµÄÒ»²½¡£
¶Ô SQL Server 7.0 ֮ǰµÄ°æ±¾ÖеĶÔÏó½øÐзÖÇø
ÔÚ SQL Server 6.5 ¼°ÒÔǰµÄ°æ±¾ÖУ¬·ÖÇøÖ»ÄÜͨ¹ýÉè¼ÆÀ´Íê³É£¬»¹±ØÐëÄÚÖõ½ËùÓÐÊý¾Ý·ÃÎʱàÂëºÍ²éѯ·½·¨ÖС£Í¨¹ý´´½¨¶à¸ö±í£¬È»ºóͨ¹ý´æ´¢¹ý³Ì¡¢ÊÓͼ»ò¿Í»§¶ËÓ¦ÓóÌÐò¹ÜÀí¶ÔÕýÈ·±íµÄ·ÃÎÊ£¬Í¨³£¿ÉÒÔ¸ÄÉÆÄ³Ð©²Ù×÷µÄÐÔÄÜ£¬µ«´ú¼ÛÊÇÔö¼ÓÁËÉè¼ÆµÄ¸´ÔÓÐÔ¡£Ã¿¸öÓû§ºÍ¿ª·¢ÈËÔ±¶¼±ØÐëÖªµÀ£¨²¢ÕýÈ·ÒýÓã©ÕýÈ·µÄ±í¡£µ¥¶À´´½¨ºÍ¹ÜÀíÿ¸ö·ÖÇø£¬¶øÊ¹ÓÃÊÓͼÀ´¼ò»¯·ÃÎÊ£»µ«ÊÇÕâÖÖ½â¾ö·½°¸¶ÔÐÔÄܲ¢Ã»ÓÐÌ«´óµÄ¸ÄÉÆ¡£Ê¹ÓÃÁªºÏÊÓͼ¼ò»¯Óû§ºÍÓ¦ÓóÌÐò·ÃÎÊʱ£¬²éѯ´¦ÀíÆ÷±ØÐë·ÃÎÊÿ¸ö»ù´¡±í²ÅÄÜÈ·¶¨½á¹û¼¯ËùÐèµÄÊý¾Ý¡£Èç¹ûÖ»ÐèÒª»ù´¡±íµÄÓÐÏÞ×Ó¼¯£¬Ôòÿ¸öÓû§ºÍ¿ª·¢ÈËÔ±¶¼±ØÐëÁ˽â´ËÉè¼Æ£¬ÒÔ±ãÖ»ÒýÓÃÏàÓ¦µÄ±í¡£
SQL Server 7.0 ÖеķÖÇøÊÓͼ
ÔÚ SQL Server 7.0 ֮ǰµÄ°æ±¾ÖУ¬ÊÖ¶¯´´½¨·ÖÇøËùÃæÁÙµÄÌôÕ½Ö÷ÒªÓëÐÔÄÜÓйء£¾¡¹ÜÊÓͼ¿ÉÒÔ¼ò»¯Ó¦ÓóÌÐòÉè¼Æ¡¢Óû§·ÃÎʺͲéѯµÄ±àд£¬µ«È´ÎÞ·¨¸ÄÉÆÐÔÄÜ¡£¶øÔÚ SQL Server 7.0 °æ±¾ÖУ¬ÊÓͼ½áºÏÁËÔ¼Êø£¬ÔÊÐí²éѯÓÅ»¯³ÌÐò´Ó²éѯ¼Æ»®ÖÐɾ³ý²»Ïà¹ØµÄ±í£¨¼´·ÖÇøÏû³ý£©£¬´ó´ó½µµÍÁËÁªºÏÊÓͼ·ÃÎʶà¸ö±íʱµÄ×ܼƻ®³É±¾¡£
Çë²Î¼ûͼ 1 ÖÐµÄ YearlySales ÊÓͼ¡£Äú¿ÉÒÔ¶¨ÒåÊ®¶þ¸öµ¥¶ÀµÄ±í£¨Èç SalesJanuary2003¡¢SalesFebruary2003 µÈ£©£¬È»ºó¶¨Òåÿ¸ö¼¾¶ÈµÄÊÓͼÒÔ¼°È«ÄêµÄÊÓͼ YearlySales£¬¶ø²»Êǽ«ËùÓÐÏúÊÛÊý¾Ý·Åµ½Ò»¸ö´óÐͱíÖС£
ͼ 1£ºSQL Server 7.0/2000 ÖеķÖÇøÊÓͼ
ʹÓÃÒÔϲéѯ·ÃÎÊ YearlySales ÊÓͼµÄÓû§Ö»»á±»Òýµ¼ÖÁ SalesJanuary2003 ±í¡£
SELECT ys.*
from dbo.YearlySales AS ys
WHERE ys.SalesDate = '20030113'
Ö»ÒªÔ¼Êø¿ÉÐŲ¢ÇÒ·ÃÎÊÊÓͼµÄ²éѯʹÓà WHERE ×Ó¾ä¸ù¾Ý·ÖÇø¼ü£¨¶¨ÒåÔ¼ÊøµÄÁУ©ÏÞÖÆ²éѯ½á¹û£¬SQL Server ¾Í»áÖ»·ÃÎʱØÐèµÄ»ù´¡±í¡£ÊÜÐÅÈεÄÔ¼ÊøÊÇÖ¸ SQL Server Äܹ»È·±£ËùÓÐÊý¾Ý·ûºÏ¸ÃÔ¼ÊøËù¶¨ÒåµÄÊôÐÔµÄÔ¼Êø¡£´´½¨Ô¼ÊøÊ±£¬Ä¬ÈÏÐÐ


Ïà¹ØÎĵµ£º

Àμǣ¡SQL ServerÊý¾Ý¿â¿ª·¢µÄ¶þʮһÌõ¾ü¹æ(SQLÊÕ²Ø)

Èç¹ûÄãÕýÔÚ¸ºÔðÒ»¸ö»ùÓÚSQL ServerµÄÏîÄ¿£¬»òÕßÄã¸Õ¸Õ½Ó´¥SQL Server£¬Äã¶¼ÓпÉÄÜÒªÃæÁÙһЩÊý¾Ý¿âÐÔÄܵÄÎÊÌ⣬ÕâÆªÎÄÕ»áΪÄãÌṩһЩÓÐÓõÄÖ¸µ¼£¨ÆäÖдó¶àÊýÒ²¿ÉÒÔÓÃÓÚÆäËüµÄDBMS£©¡£
ÔÚÕâÀÎÒ²»´òËã½éÉÜʹÓÃSQL ServerµÄÇÏÃÅ£¬Ò²²»ÄÜÌṩһ¸ö°üÖΰٲ¡µÄ·½°¸£¬ÎÒËù×öµÄÊÇ×ܽáһЩ¾­Ñé----¹ØÓÚÈçºÎÐγÉÒ»¸öºÃµÄÉè¼Æ¡£Õ ......

SQL²éѯÓï¾ä¸´Ï°Ìâ

н¨Ñ§Éú-¿Î³ÌÊý¾Ý¿âµÄÈý¸ö±í:
ѧÉú±í:Student(Sno,Sname,Ssex,Sage,Sdept) SnoΪÖ÷Âë;
¿Î³Ì±í:Course(Cno,Cname,Cpno,Credeit) CnoΪÖ÷Âë;
ѧÉúÑ¡ÐÞ±í:SC(Sno,Cno,Grade) Sno,Cno,ΪÖ÷Âë;
Student
ѧºÅ
SnoÐÕÃû
SnameÐÔ±ð
SsexÄêÁä
SageËùÔÚϵ
Sdept
95001ÀîÓÂÄÐ20CS
95002Áõ³¿Å®19IS
95003ÍõÃôÅ®18MA
95004 ......

¸ßЧSQL²éѯ֮Ë÷Òý£¨VI)

ÎÒÃÇÏÈ¿´ NestedLoop ºÍ MergeJoin µÄËã·¨£¨ÒÔÏÂΪÒýÓ㬼û RicCC µÄ¡¶ ͨÍùÐÔÄÜÓÅ»¯µÄÌìÌà - µØÓü JOIN ·½·¨ËµÃ÷ ¡· ):
==================================
NestedLoop:
   foreach rowA in tableA where tableA.col2=?
    {
    search rowsB from tableB where tab ......

¸ßЧSQL²éѯ֮Ë÷Òý¸²¸Ç(index coverage)

½ñÌì×öSQL ÓÅ»¯£¬²éÕÒÖ´Ðмƻ®Ê±£¬Ö´Ðмƻ®£¬·¢ÏÖ´ËÖ´Ðмƻ®ÓëÒÔÍùµÄ¼Æ»®ÓÐËùÇø±ð£»ÕÒ¼»¥ÁªÍø£¬ÖÕÓÚÕÒһƪÓйØÑо¿±È½ÏÉîÈëµÄÎÄÕ£»
Ô­Ö´Ðмƻ®Ê¹ÓõÄÊÇË÷ÒýɨÃ裬ͻȻһÏ»áʹÓÃË÷Òý¸²¸Ç¼¼Êõ£¬Ð§ÂÊ´óÔö£»
SELECT * µÄÕæÏࣺË÷Òý¸²¸Ç(index coverage)
SELECT *µÄЧÂʺÜÔã¸âÂ𣿵±È»£¬ËùÓÐÈ˶¼ÖªµÀÕâÒ»µã£¬µ«ÊÇÎªÊ²Ã´ÄØ£ ......

SQL ServerË÷ÒýÔ­Ôò

¾ßÌå³ö´¦²»Ïê¡£
ÈçºÎÈÃÄãµÄSQLÔËÐеøü¿ì
---- ÈËÃÇÔÚʹÓÃSQLʱÍùÍù»áÏÝÈëÒ»¸öÎóÇø£¬¼´Ì«¹Ø×¢ÓÚËùµÃµÄ½á¹ûÊÇ·ñÕýÈ·£¬¶øºöÂÔÁ˲»Í¬µÄʵÏÖ·½·¨Ö®¼ä¿ÉÄÜ´æÔÚµÄÐÔÄܲîÒ죬ÕâÖÖÐÔÄܲîÒìÔÚ´óÐ͵ĻòÊǸ´ÔÓµÄÊý¾Ý¿â»·¾³ÖУ¨ÈçÁª»úÊÂÎñ´¦ÀíOLTP»ò¾ö²ßÖ§³ÖϵͳDSS£©ÖбíÏÖµÃÓÈΪÃ÷ÏÔ¡£±ÊÕßÔÚ¹¤×÷ʵ¼ùÖз¢ÏÖ£¬²»Á¼µÄSQLÍùÍùÀ´×ÔÓÚ² ......
© 2009 ej38.com All Rights Reserved. ¹ØÓÚE½¡ÍøÁªÏµÎÒÃÇ | Õ¾µãµØÍ¼ | ¸ÓICP±¸09004571ºÅ