¸ßЧSQL²éѯ֮Ë÷Òý£¨II£©
ÉÏ»ØÎÒÃÇ˵µ½ÆÀ¹ÀÒ»ÌõÓï¾äÖ´ÐÐЧÂÊÖ÷Òª¿´Âß¼ IO £¨É¶ÊÇÂß¼ IO £¬É¶ÊÇÎïÀí IO ¼ûÁª»úÎĵµ£©£¬Õâ´ÎÎÒÃǼÌÐø¡£
ÎÒÃÇÏÈ˵˵£¬·µ»Ø¶àÐнá¹ûʱ£¬ÎªÊ²Ã´ SQLServer ÓÐʱ»áÑ¡Ôñ index seek £¬ÓÐʱ»áÑ¡Ôñ index scan ¡£
ÒÔ nonclustered index ΪÀý˵Ã÷¡£
ÏñËùÓеÄË÷Òý B Ê÷Ò»Ñù£¬·Ç¾Û¼¯Ë÷ÒýÊ÷Ò²°üÀ¨ÍêÈ«ÓÉË÷ÒýÊý¾Ý×é³ÉµÄ¸ù½ÚµãºÍÖм伶½Úµã£»µ«ÊǺ;ۼ¯Ë÷ÒýÊ÷²»Í¬µÄÊÇ£¬¾Û¼¯Ë÷ÒýÊ÷Ò¶½Úµã°üº¬µÄÊÇ»ù´¡±íµÄÊý¾ÝÒ³£¨ÎÒÃdz£Ëµ£¬±íµÄÎïÀí´æ´¢Ë³ÐòºÍ¾Û¼¯Ë÷ÒýÏàͬ£¬¾ÍÊÇÕâ¸öÔÒò£©,·Ç¾Û¼¯Ë÷ÒýÊ÷Ò¶½ÚµãÊÇË÷ÒýÒ³¡£ SQLServer ͨ¹ý·Ç¾Û¼¯Ë÷Òý²éÕÒÊý¾Ýʱ£¬»áͨ¹ýÕâ¸ö·Ç¾Û¼¯Ë÷Òý¼üֵȥËÑË÷¾Û¼¯Ë÷Òý£¬½ø¶ø¼ìË÷»ù´¡±íÊý¾ÝÐС£
¼ÙÉèÓÐÕâÑùÒ»ÕÅ±í£¬·Ç¾Û¼¯Ë÷ÒýÊ÷Éî¶ÈΪ 2 £¬Ò»²ã¸ù½Úµã£¨ 1 ¸öË÷ÒýÒ³£©£¬Ò»²ãÒ¶½Úµã£¨ 4 ¸öË÷ÒýÒ³£©¡£¾Û¼¯Ë÷ÒýÊ÷Éî¶ÈΪ 3 £¬Ò»²ã¸ù½Úµã£¨ 1 ¸öË÷ÒýÒ³£©£¬Ò»²ãÖм伶½Úµã£¨ 2 ¸öË÷ÒýÒ³£©£¬Ò»²ãÒ¶½Úµã£¨ 250 Ò³£¬Ò²¾ÍÊÇ»ù´¡±íÎïÀí´æ´¢Ò³£©±íµÄÊý¾Ý¼ÙÉè 1w ÐС£×¢£ºËùÓÐÊý¾Ý¾ùΪ¼ÙÉ裬ֻΪ˵Ã÷ÔÀí¡£
ÎÒÃÇÊ×ÏÈ£¬ÔÙÇ¿µ÷Ò»±é£¬ SQLServer »ñÈ¡Êý¾Ý£¬×ÜÊÇÒÔҳΪµ¥Î»£¬¾ÍËãÊÇÖ»¶ÁȡһÐÐÒ²»á»ñÈ¡ÕûÕÅÒ³ £¨¼û¡¶Ð´ÓÐЧÂ浀 SQL ²éѯ£¨ I £©¡·£©
ÏÖÔÚÓÐÒ»Ìõ¼òµ¥²éѯ ( È磺 select * from tb where col2 = 99 £¬ col2 ÊÇ tb ±íÖеķǾۼ¯Ë÷Òý ) £¬¼ÙÉè»á·µ»Ø 100 ÐС£
Ok £¬ÎÒÃÇÀ´·ÖÎöÈç¹ûÒÔ Index seek À´²éÕÒÕâ 100 ÐлáÓжàÉÙ IO ¡£ index seek ÿ´Î¶¼´ÓË÷ÒýÊ÷¸ù½Úµã¿ªÊ¼²éÕÒ£¬ÕÒµ½Öм伶½Úµã£¨ 99 ¶ÔÓ¦µÄË÷ÒýÐУ©£¬È»ºó´Ó¸Ã½ÚµãÐпªÊ¼Á¬Ðø±éÀúËùÓÐ col2 Ϊ 99 µÄË÷ÒýÐС£ÔÚ±éÀúÕâЩÐÐʱ£¬Ã¿Äõ½Ò»Ìõ£¬¶¼»áͨ¹ý¸ÃÌõË÷ÒýÐÐÖоۼ¯Ë÷Òý¼üֵȥ¾Û¼¯Ë÷ÒýÊ÷ÖÐ index seek £¬È»ºó´ÓÊý¾ÝÒ³ÖлñÈ¡Êý¾Ý¡£ÔÚ×µÄÇé¿öÏ£¬ col2 Ϊ 99 ¶ÔÓ¦µÄË÷ÒýÐпçÔ½ÁËÈ«²¿ 4 ¸öÒ¶¼¶·Ç¾Û¼¯Ë÷ÒýÒ³£¨µ±È»£¬Õâûɶ¿ÉÄÜÐÔ£¬¾ÙÀý¶øÒÑ£¬ÇÐÎðÉ£©£»Ã¿´Îͨ¹ý¾Û¼¯Ë÷ÒýÊ÷½øÐÐ index seek £¬ IO ¿ªÏú×Çé¿öÏÂÊÇÒ»¸ö¸ù½Úµã£¬Ò»¸öÖм伶½Úµã£¬Ò»¸öÊý¾ÝÒ³ , Ò»¹²Òª seek100 ´Î£¬¿ªÏú 300 ¸öÂß¼ IO ¡£×ÛÉÏ£¬Í¨¹ý nonclustered index seek ×ܹ²¿ªÏúÊÇ 305 ¸ö IO ¡£
ÒªÖªµÀ£¬ÎÒÃǵĻù´¡±íÊý¾ÝÒ³Ò»¹²²Å 250 Ò³£¬Õâ˵Ã÷ÁËɶ£¿ËµÃ÷¾ÍËãÊÇÎÒ´ÓÍ·µ½Î²É¨ÃèÒ»±é±íÒ²±È noncustered index seek ¿ì¡£Õâʱ£¬ SQL2k5 »á²úÉúÒ»¸öÍêÍêȫȫµÄ clustered index scan Ö´Ðмƻ®À´¸ã¶¨±íɨÃè¡£
ºÃÁË£¬ÏÖÔÚÎÒÃÇÔÙÀ´·ÖÎö select * from tb1 where col2 = 1 ¡£¼ÙÉèËüµÄ½á¹û¼¯Îª 5 ÐС£Èç¹ûÕâʱ»¹Êǽ
Ïà¹ØÎĵµ£º
ϵͳ»·¾³£ºWindows 7
Èí¼þ»·¾³£ºVisual C++ 2008 SP1 +SQL Server 2005
±¾´ÎÄ¿µÄ£º±àдһ¸öº½¿Õ¹ÜÀíϵͳ
ÕâÊÇÊý¾Ý¿â¿Î³ÌÉè¼ÆµÄ³É¹û£¬ËäÈ»³É¼¨²»¼Ñ£¬µ«ÊÇ×÷ΪÎÒÓÃVC++ ÒÔÀ´±àдµÄ×î´ó³ÌÐò»¹ÊÇ´«µ½ÍøÉÏ£¬ÒÔ¹©²Î¿¼¡£ÓÃVC++ ×öÊý¾Ý¿âÉè¼Æ²¢²»ÈÝÒ×£¬µ«Ò²²»ÊDz»¿ÉÄÜ¡£ÒÔÏÂÊÇÎҵijÌÐò½çÃæ£¬ºóÃæ ......
1£® ÅжÏa±íÖÐÓжøb±íÖÐûÓеļǼ
select a.* from tbl1 a
left join tbl2 b
on a.key = b.key
where b.key is null
ËäȻʹÓÃinÒ²¿ÉÒÔʵÏÖ£¬µ«ÊÇÕâÖÖ·½·¨µÄЧÂʸü¸ßһЩ
2£® н¨Ò»¸öÓëij¸ö±íÏàͬ½á¹¹µÄ±í
select * into b
from a where 1<>1
3£®betwee ......
н¨Ñ§Éú-¿Î³ÌÊý¾Ý¿âµÄÈý¸ö±í:
ѧÉú±í: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ÖеÄdatetimeÓ÷¨Ïê½â
×ªÔØµØÖ·£ºhttp://blog.sina.com.cn/s/blog_495491770100fq4n.html
2009-07-27 09:45 sql server2000ÖÐʹÓÃconvertÀ´È¡µÃdatetimeÊý¾ÝÀàÐÍÑùʽ
ÈÕÆÚÊý¾Ý¸ñʽµÄ´¦Àí£¬Á½¸öʾÀý£º
CONVERT(varchar(16), ʱ¼äÒ», 20) ½á¹û£º2007-02-01 08:02
ʱ¼äÒ»°ãΪ
getdate()
º¯Êý»òÊý¾Ý±íÀïµÄ ......
´óÐÍϵͳµÄÉú²ú»·¾³£¬Ò»°ãÇé¿öÏ£¬ÎÒÃÇÆÀ¼ÛÒ»Ìõ²éѯÊÇ·ñÓÐЧÂÊ£¬¸ü¶àµÄÊǹØ×¢Âß¼ IO( ÖÁÓÚΪʲô£¬»ØÍ·²¹Ò»Æª ) ¡£ÎÒÃdz£Ëµ£¬“Òª½¨±ëº·µÄË÷Òý”¡¢“Ҫд¸ßЧµÄ SQL ”£¬Æäʵ×îÖÕÄ¿µÄ¾ÍÊÇÔÚÏàͬ½á¹û¼¯Çé¿öÏ£¬¾¡¿ÉÄܼõÉÙÂß¼ IO ¡£
1.1 where Ìõ¼þµÄÁÐÉ϶¼µÃÓÐͳ¼ÆÐÅÏ¢¡£
......