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

SQLServerË÷Òýµ÷ÓÅʵ¼ù(2) Ë÷Òý¸²¸Ç

¼ÌÐøSQLServerË÷Òýµ÷ÓÅʵ¼ù¡£Õâ´Î̽ÌÖÒ»ÏÂË÷Òý¸²¸Ç - SQL ServerÖ÷ҪʹÓÃË÷ÒýÈ¥²éѯÄãÐèÒªµÄÊý¾Ý£¬µ±Ë÷Òý°üÀ¨ËùÓеÄÄãÇëÇó²éѯµÄ×ֶΣ¬SQL Server½«²»ÐèҪȥÔÚ±íÖвéѯ¡£Õâ¸ö¸ÅÄî³Æ×ö“Ë÷Òý¸²¸Ç”¡£
SQLServer2005µÄNon-clustered INDEXÔö¼ÓÁËÒ»¸ö“°üº¬ÁÐ(included column)
”Ñ¡Ïî¡£ÔÚ SQL Server 2005
ÖУ¬¿ÉÒÔͨ¹ý½«·Ç¼üÁÐÌí¼Óµ½·Ç¾Û¼¯Ë÷ÒýµÄÒ¶¼¶±ðÀ´À©Õ¹·Ç¾Û¼¯Ë÷ÒýµÄ¹¦ÄÜ¡£Í¨¹ý°üº¬·Ç¼üÁУ¬¿ÉÒÔ´´½¨¸²¸Ç¸ü¶à²éѯµÄ·Ç¾Û¼¯Ë÷Òý¡£µ±²éѯÖеÄËùÓÐÁж¼×÷Ϊ¼üÁÐ
»ò·Ç¼üÁаüº¬ÔÚË÷ÒýÖÐʱ£¬´øÓаüº¬ÐԷǼüÁеÄË÷Òý¿ÉÒÔÏÔÖøÌá¸ß²éѯÐÔÄÜ¡£ÕâÑù¿ÉÒÔʵÏÖÐÔÄÜÌáÉý£¬ÒòΪ²éѯÓÅ»¯Æ÷¿ÉÒÔÔÚË÷ÒýÖÐÕÒµ½ËùÓÐÁÐÖµ£»²»·ÃÎʱí»ò¾Û¼¯
Ë÷ÒýÊý¾Ý£¬´Ó¶ø¼õÉÙ´ÅÅÌ I/O ²Ù×÷¡£
µ«Ó¦±ÜÃâÌí¼Ó²»±ØÒªµÄÁС£Ìí¼Ó¹ý¶àµÄË÷ÒýÁУ¨¼üÁлò·Ç¼üÁУ©»á¶ÔÐÔÄܲúÉú²»Á¼Ó°Ï죬Ӧ¸ÃºÏÀíʹÓ᣺ÍClustered
INDEX£¬»òÕß×éºÏË÷Òý£¬½áºÏʹÓã¬À©´óË÷Òý¸²¸Ç£¬µ«²»´ó¿ÉÄÜËùÓÐÁж¼ÓÐË÷Òý¸²¸Ç£¬´ÅÅÌ¿ªÏúºÍÊý¾Ýinsert
updatʱË÷ÒýµÄÖØмÆËãµÄʱ¼ä¿ªÏúÊǾ޴óµÄ¡£×ÜÖ®£¬ºÏÀíµÄË÷ÒýÉè¼ÆÊǽ¨Á¢ÔÚ¶Ô¸÷ÖÖ²éѯµÄ·ÖÎöºÍÔ¤²âÉϵģ¬Ö»ÓÐÕýÈ·µØʹË÷ÒýÓë³ÌÐò½áºÏÆðÀ´,²ÅÄܲúÉú×î
¼ÑµÄÓÅ»¯·½°¸¡£
¼ÌÐøʵ¼ù£¬ÏȽ¨¸öʵÑé±í Table1£º

½¨Á½¸öË÷Òý£º
1. Ö÷¼üIDÊÇClustered INDEX
2. ·Ç¾Û´ØË÷ÒýNon-Clustered INDEX½¨Á¢ÔÚAgeÁÐÉÏ£¬°üº¬ÁУºCount¡£
CREATE NONCLUSTERED INDEX [cnt] ON [dbo].[table1]
(
    [Age] ASC
)
INCLUDE ( [Count])
ON [PRIMARY]
ÎÒÃǵIJâÊÔSQLÓï¾äÊÇ£º´Ó10ÍòÌõ¼Ç¼ÖÐÈ¡³ö4Ìõ¼Ç¼£¬Á½ÖÖд·¨
1. SELECT *
from table1 WHERE age < 100;
2. SELECT count
from table1 WHERE age < 100;
¿´¿´ÔËÐÐЧÂÊÈçºÎ£º
´ÅÅÌIOºÍʱ¼ä£º

ʵ¼ÊÖ´Ðмƻ®£º

ÐÔÄܾÓÈ»Ïà²î20¶à±¶¡£ÎªÊ²Ã´£¿
Ô­À´µÚ¶þ¾äSelect Count
ÔÚË÷Òý¸²¸Ç·¶Î§ÄÚ£¬ÒòΪ²éѯÓÅ»¯Æ÷¿ÉÒÔÔÚË÷ÒýÖÐÕÒµ½ËùÓÐÁÐÖµ£»²»·ÃÎʱí»ò¾Û¼¯Ë÷ÒýÊý¾Ý£¬´Ó¶ø¼õÉÙ´ÅÅÌ I/O ²Ù×÷¡£¶øµÚÒ»¾äSelect *
Ñ¡ÔñÁËËùÓÐ×ֶΣ¬ÆäÖÐÓÐÒ»¸ö×Ö¶ÎName²»ÔÚË÷Òý¸²¸Ç·¶Î§ÄÚ£¨¼È²»ÔÚ¾Û´ØË÷ÒýÁУ¬Ò²²»ÔڷǾ۴ØË÷Òý¸²¸ÇÁÐÄÚ£©£¬SQL
Server¿ÉÒÔÔÚͬһ¸ö²éѯÖÐΪһ¸ö±íʹÓöà¸öË÷Òý£¬²¢¿ÉÒԺϲ¢¶à¸öË÷Òý£¨Ê¹ÓÃÁª½ÓËã·¨£©£¬ÒÔ±ãËÑË÷¹Ø¼ü×Ö¹²Í¬¸²¸ÇÒ»¸ö²éѯ¡£²éѯ·ÖÎöÓÅ»¯Æ÷»á×Ô¶¯½øÐÐ
Ñ¡Ôñ, ÉÏÊöÖ´Ðмƻ®¾ÍÊÇÓÅ»¯µÄ½á¹û£¬ÒÀÈ»±ÈµÚ¶þ¸öindex seekÂýÁË20±¶¡£
È»ºóÎÒÓÖ°Ñsql¸ÄÁËһϣ¬±ä³É´Ó10ÍòÌõ


Ïà¹ØÎĵµ£º

sqlserver ÆÚÖп¼ÊÔÌâ

 create database DB
use DB
--רҵ±í
create table major
(spno char(5) not null primary key,
 spname varchar(20) not null,
 pno char(2) )
--ѧÉú±í
create table student
(sno char(7) not null primary key,
 sname varchar(20) not null,
 ssex char(2) not null,
 sag ......

SQLServer Öд¦ÀíÁ½¸öÈÕÆÚÏà¼õµÃµ½ÌìÊý


DATEDIFF(datepart,   startdate,   enddate)  
   
  Datepart   Abbreviations    
  year   yy,   yyyy    
  quarter   qq,   q    
  month   mm,   m    
......

SQLServerË÷Òýµ÷ÓÅʵ¼ù£¨1£©

Ë÷ÒýµÄÖØÒªÐÔ
Êý¾Ý¿âÐÔÄÜÓÅ»¯ÖÐË÷Òý¾ø¶ÔÊÇÒ»¸öÖØÁ¿¼¶µÄÒòËØ£¬¿ÉÒÔ˵£¬Ë÷ÒýʹÓò»µ±£¬ÆäËüÓÅ»¯´ëÊ©½«ºÁÎÞÒâÒå¡£
¾Û´ØË÷Òý
(Clustered Index)ºÍ·Ç¾Û´ØË÷Òý
(Non- Clustered Index)
×îͨË׵ĽâÊÍÊÇ:¾Û´ØË÷ÒýµÄ˳Ðò¾ÍÊÇÊý¾ÝµÄÎïÀí´æ´¢Ë³Ðò£¬¶ø¶Ô·Ç¾Û´ØË÷ÒýµÄË÷Òý˳ÐòÓëÊý¾ÝÎïÀíÅÅÁÐ˳ÐòÎ޹ء£¾ÙÀýÀ´Ëµ£¬Äã·­µ½Ð»ª×ÖµäµÄº ......
© 2009 ej38.com All Rights Reserved. ¹ØÓÚE½¡ÍøÁªÏµÎÒÃÇ | Õ¾µãµØͼ | ¸ÓICP±¸09004571ºÅ