Äú¿ÉÒÔ¾èÖú£¬Ö§³ÖÎÒÃǵĹ«ÒæÊÂÒµ¡£

1Ôª 10Ôª 50Ôª





ÈÏÖ¤Â룺  ÑéÖ¤Âë,¿´²»Çå³þ?Çëµã»÷Ë¢ÐÂÑéÖ¤Âë ±ØÌî



  ÇóÖª ÎÄÕ ÎÄ¿â Lib ÊÓÆµ iPerson ¿Î³Ì ÈÏÖ¤ ×Éѯ ¹¤¾ß ½²×ù Modeler   Code  
»áÔ±   
 
   
 
 
     
   
 ¶©ÔÄ
  ¾èÖú
SQL Serverµ÷ÓÅϵÁнø½×
 
À´Ô´£ºÖ¸¼âÁ÷ÌÊ ·¢²¼ÓÚ£º2015-2-10
  1715  次浏览      27
 

ǰÑÔ

ÉÏһƪÎÒÃÇÑо¿ÁËÈçºÎÀûÓÃË÷ÒýÔÚÊý¾Ý¿âÀïÃæµ÷ÓÅ£¬¼òÒªµÄ½éÉÜÁËË÷ÒýµÄÔ­Àí£¬¸üÖØÒªµÄ·ÖÎöÁËÈçºÎÑ¡ÔñË÷ÒýÒÔ¼°Ë÷ÒýµÄÀû±×Ïî¡£

±¾ÆªÑÓÐøÉÏһƪµÄÄÚÈÝ£¬¼ÌÐø·ÖÎöË÷ÒýÕâ¿é£¬²àÖØË÷ÒýÏîµÄÈÕ³£Î¬»¤ÒÔ¼°Ò»Ð©×¢ÒâÊÂÏîµÈ¡£

ÏÐÑÔÉÙÐ𣬽øÈ뱾ƪµÄÖ÷Ìâ¡£

¼¼Êõ×¼±¸

Êý¾Ý¿â°æ±¾ÎªSQL Server2012£¬Ç°¼¸ÆªÎÄÕÂÓõÄÊÇSQL Server2008RT£¬ÄÚÈÝÇø±ð²»´ó£¬ÀûÓÃ΢ÈíµÄÒÔǰµÄ°¸Àý¿â£¨Northwind£©½øÐзÖÎö£¬²¿·ÖÄÚÈÝÒ²»áÓ¦ÓÃ΢ÈíµÄÁíÒ»¸ö°¸Àý¿âAdventureWorks¡£

ÏàÐÅÁ˽âSQL ServerµÄÅóÓÑ£¬¶ÔÕâÁ½¸ö¿â¶¼²»»á̫İÉú¡£

 

Ò»¡¢´´½¨Ë÷Òý

µ±ÎÒÃÇÒª¿ªÊ¼¶Ô±í½øÐÐË÷ÒýµÄ´´½¨µÄʱºò£¬Ê×ÏÈÃ÷È·µÄÊÇ£¬Ò»ÕűíÄÚÖ»ÄÜ´´½¨Ò»¸ö¾Û¼¯Ë÷Òý£¬×î¶à¿ÉÒÔ´´½¨×î¶à249¸ö·Ç¾Û¼¯Ë÷Òý(SQL Server2005)£¬ÔÚSQL Server2008ÒÔºó¾Û¼¯Ë÷ÒýÊýÌáÉýÖÁ999¸ö£¬ÉÏһƪÎÄÕÂÎÒÃÇÖªµÀ¶ÔÓÚ¾Û¼¯Ë÷ÒýÏîÒ»°ãÒª´´½¨ÉÏ£¬¶ø·Ç¾Û¼¯Ë÷ÒýÏîÒª¸ù¾ÝÈÕ³£µÄT-SQLÓï¾ä½øÐÐÑ¡Ôñ¡£

¹ØÓÚË÷ÒýµÄÑ¡ÔñÊÇÒ»¸öºÜ¿¼Ñéµ÷ÓÅÄÜÁ¦µÄÊÂÇ飬´ó²¿·ÖµÄÇé¿öÏÂÓÅÖʵÄË÷Òýн¨È«¿¿¾­Ñé¶øÂÛ£¬ÓÐÐËȤµÄ¿ÉÒÔµã»÷²éÔÄÎÒÇ°ÃæµÄһϵÁйØÓÚ·ÖÎö²éѯ¼Æ»®µÄÎÄÕ£¬ÕÆÎÕסÀïÃæµÄ¾«Ëè²ÅÄÜÓеķÅʸ¡£

µ±È»£¬Ð¡°×¼¶±ðµÄÒ²¿ÉÒÔ²ÎÕÕÈçÏ·½·¨³¢ÊÔ½øÐд´½¨£º

ÓÉÓÚSQL ServerÓÐ×Å×Ô¼ºµÄÒ»Ì×µ÷Óż¼ÇÉ£¬ËùÒÔÔÚÎÒÃÇÿ´ÎÔËÐеÄT-SQLÓï¾äÓ¦¸ÃÔõÑùÓÅ»¯£¬SQL ServerÊÇÁËÈçÖ¸ÕÆµÄ£¬ËùÒÔËü»á½«È±Ê§µÄË÷ÒýÏî½øÐмǼ£¬ÓÃÓÚÌáʾʹÓÃÕߣ¬³¢ÊÔÈ¥½¨Á¢ÕâЩË÷Òý¡£

Ö÷Òª¼Ç¼ÔÚÒÔϼ¸¸öDMVÖÐ

sys.dm_db_missing_index_details

sys.dm_db_missing_index_groups

sys.dm_db_missing_index_group_stats

sys.dm_db_missing_index_columns(index_handle)

sys.dm_db_missing_index_details

¹ØÓÚÕâЩ¸öDMVµÄʹÓã¬À´¾ÙÒ»¸öÀý×Ó£º

--н¨±í£¬½¨Á¢Ö÷¼ü£¬Ðγɾۼ¯Ë÷Òý
CREATE TABLE BigTable
(
   [KEY] INT,
   DATA INT,
   PAD CHAR(200),
   CONSTRAINT [PK1] PRIMARY KEY ([KEY])
)
GO
--ÅúÁ¿²åÈë²âÊÔÊý¾Ý250000ÐÐ
SET NOCOUNT ON 
DECLARE @i INT
BEGIN TRAN
    SET @i=0
    WHILE @i<250000
    BEGIN
       INSERT BigTable VALUES(@i,@i,NULL)
       SET @i=@i+1
       IF @i%1000=0
       BEGIN
          COMMIT TRAN
          BEGIN TRAN
       END
END    
COMMIT TRAN
GO

ÀûÓÃÕâ¸ö²âÊԽű¾£¬ÎÒÃÇн¨ÁËÒ»ÕŲâÊÔ±í£¬²¢ÇÒ²åÈëÁËһЩ²âÊÔÊý¾Ý£¬ÔËÐÐÒ»¸ö²éѯ

SELECT [KEY],[DATA]
FROM BigTable
WHERE DATA<1000
GO

ÔÚÕâ¸ö¼òµ¥µÄ²éѯ½Å±¾ÖУ¬SQL ServerÒѾ­ÌáʾÁËÎÒÃÇÐèÒª´´½¨µÄË÷ÒýÏî¡£ÎÒÃÇ¿ÉÒÔÓÒ¼ü£¬Ö±½ÓÉú³É´´½¨½Å±¾

SQL ServerÒѾ­ÌáʾÎÒÃÇÒª´´½¨µÄË÷ÒýÏîÄÚÈÝÁË£¬´©¼þÒ»¸ö·Ç¾Û¼¯Ë÷ÒýÔÚÁÐDATAÉÏ£¬²¢ÇÒINCLUDEÁÐKEY£¬²¢ÇÒ¾­´´½¨ÍêÕâ¸öË÷ÒýºóµÄÌáÉýÖµ¶¼¸ø¼ÆËã³öÀ´ÁË¡£

ÒÔÉÏÕâÖÖ·½Ê½£¬ÔÚÎÒÃǵ÷ÓŵÄʱºòÊǾ­³£Ê¹Óõģ¬ÔÚÎÒÃÇÄõ½ÐèÒªÓÅ»¯µÄÓï¾äºó£¬Ö±½ÓÖ´ÐоͿÉÒÔ¿´µ½Ò»²¿·ÖÐèÒªµ÷ÕûµÄÐÅÏ¢ÁË¡£

µ«ÊÇ£¬´ó²¿·ÖµÄT-SQLÓï¾ä²»ÔÊÐíÎÒÃǽøÐÐÕâÑùµÄÓÅ»¯Á÷³Ì£¬ÉõÖÁÓÐʱºòÊÇÒѾ­´æÔÚµÄϵͳ¡£ËùÒÔ£¬ÎÒÃÇÏÂÊֵķ½Ê½Ö»ÄÜÈÆµÀÁË£¬ÐÒºÃSQL ServerΪÎÒÃǼǼÏÂÁËÕâЩȱʧË÷ÒýÏîµÄÐÅÏ¢£¬¾Í´æÔÚÎÒÉÏÃæÌáµ½µÄ¼¸¸öDMVÖС£ÎÒÃÇÀ´²é¿´Ï£º

SELECT migs.group_handle, mid.* 
FROM sys.dm_db_missing_index_group_stats AS migs 
INNER JOIN sys.dm_db_missing_index_groups AS mig 
ON (migs.group_handle = mig.index_group_handle) 
INNER JOIN sys.dm_db_missing_index_details AS mid 
ON (mig.index_handle = mid.index_handle) 
WHERE migs.group_handle = 2

ËùÒÔ£¬´ó²¿·ÖÇé¿öÏ£¬Í¨¹ý²é¿´ÒÔÉÏÓï¾ä»ù±¾ÄÜÈ·Èϵ½ÐèÒª´´½¨µÄË÷ÒýÏîÓÐÄÄЩ¡£

Ìáʾ£ºµ«ÊÇ£¬ÕâÀïµÄDMVÐÅÏ¢Ö»ÊǼǼ×ÔÉÏ´ÎSQL ServerÆô¶¯ÒÔºóµÄÐÅÏ¢ÏҲ¾ÍÊÇ˵ÿ´ÎÖØÆôÖ®ºóÕⲿ·ÖÐÅÏ¢¾Í¶ªÊ§ÁË£¬ËùÒÔ¶ÔÓÚÉú²úϵͳ£¬½¨ÒéÈ·±£ÔËÐÐÁËÒ»¶ÎÖÜÆÚÖ®ºóÔÙ½øÐв鿴¡£

ÖªµÀÁËÓ¦¸Ã´´½¨Ê²Ã´ÑùµÄË÷Òý£¬ÏÂÒ»²½¾ÍÊÇ´´½¨Ë÷ÒýÁË£¬À´¿´´´½¨Ë÷ÒýµÄ½Å±¾

CREATE [ UNIQUE ] [ CLUSTERED | NONCLUSTERED ] INDEX index_name 
    ON  ( column [ ASC | DESC ] [ ,...n ] ) 
    [ INCLUDE ( column_name [ ,...n ] ) ]
    [ WHERE  ]
    [ WITH (  [ ,...n ] ) ]
    [ ON { partition_scheme_name ( column_name ) 
         | filegroup_name 
         | default 
         }
    ]
    [ FILESTREAM_ON { filestream_filegroup_name | partition_scheme_name | "NULL" } ]

´´½¨½Å±¾ºÜ¼òµ¥£¬Ö¸¶¨Ë÷ÒýÀàÐÍ¡¢Ë÷ÒýÃû³Æ¡¢ËùÊô±í¡¢°üº¬ÁС¢É¸Ñ¡Ïî¡¢ËùÊôÎļþ×éÒÔ¼°²Ù×÷Ïî¾Í¿ÉÒÔ´´½¨ÁË¡£

ÎÒÏàÐÅ»ù±¾¸ã¹ýSQL ServerÊý¾ÝµÄÕâ¿é½Å±¾Ò»°ã²»»áİÉú¡£

µ±È»£¬Èç¹û²»ÊìϤ½Å±¾µÄ·½Ê½£¬SQL ServerҲĬÈϸøÌṩÁËͼÐλ¯²Ù×÷½çÃæ£¬Éµ¹Ïʽ²Ù×÷

ÕâÀïÎÒÃÇÖØµã·ÖÎö¼¸µã×¢ÒâÊÂÏî¡£

UNIQUE£º

¸Ã¹Ø¼ü×ÖÖ¸¶¨Ë÷ÒýÏîΪΨһֵ£¬Ò²¾ÍÊÇ·ÇÖØ¸´Öµ£¬ÔÚʵ¼ÊÓ¦ÓÃÖзdz£µÄÓÐÓã¬Ó¦ÎªÎ¨Ò»¾ÍÒâζ×ÅÕâ¸öË÷ÒýµÄ¸ßÑ¡ÔñÐÔ£¬Ò²¾ÍÒâζ×ŵ±Ç°Ë÷ÒýµÄ¿ÉÓÃÐԸߵ͡£

Ç°ÃæÎÄÕÂÒѾ­·ÖÎöÁËSQL Server»áĬÈϵÄÔÚÖ÷¼üÁÐÉÏ´´½¨¾Û¼¯Ë÷Òý£¬Ò²ÊÇÀûÓÃÁËÖ÷¼üµÄ·Ç¿ÕºÍΨһÐÔÌØµã¡£

µ±È»£¬ÕâÀïÒ²ÌáʾϾۼ¯Ë÷ÒýÒªÇóµÄ¾ÍÊÇΨһÐÔ£¬Èç¹ûµ±Ç°ÁÐȷʵ´æÔÚÖØ¸´Öµ£¬ÄÇÔÚ´´½¨¾Û¼¯Ë÷ÒýµÄʱºòSQL Server»áĬÈϵÄÔÚµ±Ç°ÁÐÉϼÓÉÏÒ»¸öΨһ±êʶ·û£¨uniqueifiter£©ÔÚÄÚ²¿À´±£Ö¤Ë÷ÒýµÄΨһÐÔ¡£µ«Õâ¸öʱºò¾Í²»ÐèÒªÏÔʽµÄÖ¸¶¨UNIQUEÁË£¬·ñÔò»á±¨ÈçÏ´íÎó£º

CLUSTERED|NONCLUSTERED£º

Õâ¸ö¾ÍÊÇÖ¸¶¨´´½¨µÄË÷ÒýΪ¾Û¼¯»¹ÊǷǾۼ¯Ë÷Òý¡£

¹ØÓÚËü£¬ÕâÀïÓм¸µãÐèҪעÒ⣬ÒòΪ·Ç¾Û¼¯Ë÷ÒýµÄÒ¶×Ó½Úµã´æ´¢µÄ¾ÍÊǾۼ¯Ë÷Òý¼üÖµ£¬ËùÒÔÔÚ´´½¨Ë³ÐòÉÏÒª±£Ö¤ÓÅÏÈ´´½¨¾Û¼¯Ë÷Òý£¬¶øºóÔÙ´´½¨·Ç¾Û¼¯Ë÷Òý£¬±£Ö¤ÓÐ×ã¹»µÄ´æ´¢¿Õ¼äÀ´´æ·Å·Ç¾Û¼¯Ë÷Òý¡£

ÔÚÎÒÃÇÖØÐ´´½¨¾Û¼¯Ë÷ÒýµÄʱºò£¬SQL Server»áĬÈϵÄÖØÐÂÉú³ÉÈ«²¿·Ç¾Û¼¯Ë÷Òý£¬Èç¹û±íÊý¾ÝÁ¿Ìرð´ó£¬Õâ¸ö¹ý³Ì»áºÜÂþ³¤£¬Èç¹û²»Ö¸¶¨ONLINEµÄ»°£¬Õâ¸ö¹ý³Ì»áÊÇËø¶¨Ë÷ÒýB-TeeeµÄ£¬Õâ¾ÍÒâζ×ÅÊÇ×èÈûµÄ£¬ÒµÎñ¾ÍҪͣÏÂÀ´µÈ´ýÍê³É²Ù×÷£¬ÇмDz»Òª½«´ËÊ·¢ÉúÔÚÉú²ú»úÉÏ¡£

µ±È»£¬ÒÔÉÏÎÊÌâÊÇ¿ÉÒÔ±ÜÃâµÄ¡£

index_name£ºË÷ÒýµÄÃû×Ö¡£

column £º

´´½¨Ë÷ÒýËùÑ¡µÄÁÐÁË£¬ÌáʾÏ£º²»Äܽ«´óÐͶÔÏó (LOB) Êý¾ÝÀàÐÍ ntext¡¢text¡¢varchar(max)¡¢ nvarchar(max)¡¢varbinary(max)¡¢xml »ò image µÄÁÐÖ¸¶¨ÎªË÷ÒýµÄ¼üÁС£ ÁíÍ⣬¼´Ê¹ CREATE INDEX Óï¾äÖв¢Î´ÒýÓàntext¡¢text »ò image ÁС£Èç¹ûÏëÓÃÕâЩÀàÐ͵ÄÁпÉÒÔ´æ·ÅÓÚINCLUDEÀïÃæ¡£

INCLUDE£º

Ë÷Òý°üº¬ÁУ¬Õâ¸ö¹Ø¼ü×ַdz£ÓÐÓã¬ÓÈÆäÔÚÓ¦¶ÔT-SQLµÄËæ»úIOÎÊÌâÉÏ£¬¾ßÌåÄÚÈݿɲÎÕÕÎÒÇ°ÃæµÄһϵÁеÄÎÄÕ½éÉÜ¡£

»¹ÓÐÇ°ÃæÌáµ½µÄÄÇЩ´óÐͶÔÏó£¨LOB£©Êý¾ÝÀàÐÍ£¬Ò²¿ÉÒÔ°üº¬½øÈ¥£¬²»¹ýÕâÀïÓÐÒ»µãÐèÒªÌáʾÏ£¬Èç¹û°üº¬ÁË´óÐͶÔÏó£¬Ôò´´½¨Ë÷Òý²»Ö§³ÖÔÚÏߣ¨ONLINE£©²Ù×÷£¬Õâ¾ÍÒâζ×űØÐëÑ¡Ôñ·ÇÒµÎñÆ÷½øÐвÙ×÷¡£

PAD_INDEX = { ON | OFF }|FILLFACTOR =fillfactor

Õâ¸öÁ½¸öÑ¡ÏîÊÇΪÁËÉèÖÃÌî³äÒò×ÓʹÓõģ¬Ò²ÊÇÎÒÃÇÔÚ´´½¨Ë÷ÒýµÄʱºò×î³£Óõġ£

¹ØÓÚÌî³äÒò×ÓµÄ×÷Óüòµ¥µã½²¾ÍÊÇΪÁ˼õÉÙ·ÖÒ³¶øÔÚË÷Òý¿Õ¼äÖÐÌáǰÏÈÔ¤Áô¿Õ¼ä¡£ÎÒÃÇÖªµÀ¶ÔÓÚ¾Û¼¯Ë÷ÒýÔÚÒ¶¼¶±ð¾Í°üº¬ÁËÊý¾Ý£¬ËùÒÔÓû§ÔÚÕâÀï¿ÉÒÔÖ¸¶¨Ã¿¸öÒ¶×Ó±£ÁôµÄ¿Õ¼äµÄ´óС£¬Í¨¹ýÔ¤Áô¿Õ¼ä£¬¾Í¿ÉÒÔ±ÜÃâÓû§ÐµÄÊý¾ÝÌî³ä¶ø²úÉú·ÖÒ³ÏÖÏ󣬲úÉúË÷ÒýË鯬ӰÏìÐÔÄÜ¡£

µ±È»£¬¹ØÓÚÌî³äÒò×ÓµÄÄÚÈÝÖ§³Å£¬ÊÇÐèÒªÒ»²¿·Ö»ù´¡ÖªÊ¶µÄ¡£

Ë÷ÒýĬÈϵĵÄÑ¡ÏîÊÇOFF£¬Ò²¾ÍÊÇ˵»ù±¾²»»áÔ¤ÁôÌ«¶à¿Õ¼ä¡£

¹ØÓÚÕâÀïÌî³äÒò×ÓÉèÖõÄÊýÖµ´óСÎÊÌ⣬ÆäʵûÓÐÒ»¸ö¹Ì¶¨µÄÖµ£¬´¿´âÊÇÒ»¸ö¾­ÑéÖµ£¬À´×ÔÓÚϵͳµÄ³¡¾°ºÍ³¤ÆÚÔËÐеÄ×ܽᡣµ±È»£¬Èç¹û·ÇÒª¸ø³öµÄ»°£¬¿ÉÒÔ²ÎÕÕÈçϽøÐÐÉèÖãº

1.µ±¶Áд±ÈÀý´óÓÚ100£º1ʱ£¬²»ÒªÉèÖÃÌî³äÒò×Ó£¬100%Ìî³ä

2.µ±Ð´µÄ´ÎÊý´óÓÚ¶ÁµÄ´ÎÊýʱ£¬ÉèÖÃ50%-70%Ìî³ä

3.µ±¶Áд±ÈÀýλÓÚÁ½ÕßÖ®¼äʱ80%-90%Ìî³ä

µ«ÊÇ£¬Õâ¸öÖµ²¢²»ÊDZ»SQL ServerËùά»¤µÄ£¬Ò²¾ÍÊÇ˵ÔÚÕⲿ·ÖÔ¤Áô¿Õ¼äÌîÂúÖ®ºó£¬ºóÕ߸ÄÊý¾Ýҳɾ³ý²¿·ÖÊý¾ÝÖ®ºó£¬»¹ÊÇ»á²úÉúË÷ÒýË鯬£¬ËùÒÔÔÚϵͳÔËÐйýÒ»¶ÎÖÜÆÚÖ®ºó£¬ÎÒÃÇÐèÒªÊÖ¶¯µÄÈ¥ÖØÐÂÕûÀíË÷Òý£¬À´Î¬»¤ºÃË÷ÒýµÄÖÈÐò£¬Î¬»¤·½Ê½Ò²¾ÍÊÇ£ºÖØÐ´´½¨£¬ÖØÐÂ×éÖ¯µÈ¡£ÎÄÕºóÃæµÄ»á½éÉÜ¡£

SORT_IN_TEMPDB = { ON | OFF }

Õâ¸ö¾ÍÊÇÖ¸¶¨µ±Ç°Ë÷ÒýÅÅÐòÊÇ·ñÒª½èÖúTempDB¿â£¬Ä¬ÈÏֵΪOFF¡£Èç¹ûÏë¿ìËÙµÄÉú³ÉË÷ÒýÇ뽫´ËÑ¡ÏîÖ¸¶¨ÎªON£¬µ±È»±×¶Ë¾ÍÊÇ»áÀ©´óTempDBµÄ´óС£¬Èç¹ûÔ­±íÊý¾ÝÁ¿Ìرð¶àµÄ»°£¬Õâ¿ÉÄÜ»áÊÇÒ»¸öºÜ´óµÄ¿Õ¼äÖµ¡£

STATISTICS_NORECOMPUTE = { ON | OFF}

Õâ¸öÖ¸¶¨ÊÇ·ñͬʱ¸üÐÂͳ¼ÆÐÅÏ¢¡£Ä¬ÈÏÊÇ¿ªÆôµÄ¡£ÎÒÖªµÀͳ¼ÆÐÅÏ¢µÄÖØÒªÐÔ£¬ËùÒÔÔÚ´´½¨µÄʱºò²»Òª¸ü¸Ä´ËÖµ¡£

DROP_EXISTING = { ON | OFF }

ɾ³ý»òÖØ½¨µÄʱºòÊÇ·ñÖØÐÂÉú³ÉÒѾ­ÃüÃûÏÈǰ´æÔڵľۼ¯»ò·Ç¾Û¼¯Ë÷Òý¡£Ä¬ÈÏÊÇOFF¡£

Õâ¸öÑ¡Ïî·Ç³£µÄÓÐÓá£É¾³ý»òÕßÖØ½¨Ë÷ÒýµÄʱºòÕû¸öÁ÷³ÌÊÇ×÷Ϊһ¸öÊÂÎñÀ´´¦ÀíµÄ¡£ËùÒÔ£¬Í¨³£Çé¿öÏ£¬Èç¹û´òËãÖØ½¨Ò»¸ö¾Û¼¯Ë÷ÒýµÄʱºò£¬ÐèÒªÏÈɾ³ý¾Û¼¯Ë÷Òý£¬¶øºóÔÙн¨Á¢Ò»¸ö£¬µ«ÊÇÕâ¸öÁ÷³ÌÖУ¬ÔÚɾ³ýµÄʱºòSQL Server±ØÐëÖØ½¨Ã¿Ò»¸ö·Ç¾Û¼¯Ë÷Òý½«Ã¿Ò»¸ö·Ç¾Û¼¯Ë÷ÒýµÄÒ¶×Ó½ÚµãÓоۼ¯Ë÷Òý¼ü¸Ä³ÉRID,È»ºóн¨¹ý³Ì£¬ÔÚÖØ¸´µÄ½«ËùÓеÄÿһ¸ö·Ç¾Û¼¯Ë÷ÒýµÄÒ¶×Ó½ÚµãÓÉRID¼ü¸ü¸Ä³Éеľۼ¯Ë÷Òý¼üÖµ¡£

Õâ¾ÍÊÇÐèÒªÖØ½¨·Ç¾Û¼¯Ë÷ÒýÁ½´Î£¬Èç¹û±íÊý¾ÝÁ¿Ìرð´óµÄ»°£¬Õâ¸öʱ¼äÏûºÄ¾Í»áºÜ³¤ºÜ³¤…¶øÇÒÊÇ×èÈûµÄ….

µ«ÊÇÈç¹ûÖ¸¶¨DROP_EXISTINGÑ¡ÏîΪONµÄ»°£¬¾Í¿ÉÒÔÔÚ´´½¨»òÕßɾ³ýµÄʱºòÖ»ÐèÒªÒ»´Î¸ü¸ÄËùÓзǾۼ¯Ë÷Òý¾Í¿ÉÒÔ¡£µ±È»´Ë·½Ê½Ò²¿ÉÒÔͨ¹ýALTER INDEX×öµ½£¬ºóÃæ·ÖÎö¡£

ONLINE = { ON | OFF }

ÊÇ·ñÔÚÏßÌṩË÷Òý´´½¨£¬´Ë·½Ê½Ò²ÊÇÊý¾Ý¿âµÄÔÚ05°æ±¾ÒÔºóÐÂÌí¼ÓµÄÒ»´óÁÁµã£¬ÌṩÁËÔÚÏß״̬ÏÂË÷ÒýµÄ´´½¨£¬µ«ÊǽöÏÞÓÚEnterprise°æ±¾¡£

Èç¹ûÔÚÉú²úϵͳÖУ¬ÒµÎñ²¢·¢Ê±ÆÚ¿ÉÒÔ²ÉÓÃÕâ¸öÑ¡Ïî½øÐÐË÷ÒýµÄ´´½¨¼°Î¬»¤£¬µ«Ïà¶ÔÀëÏß´´½¨µÄʱ¼äÖÜÆÚÒªÃ÷ÏÔ³¤ºÜ¶à£¬µ«ÊDz»»áÔì³ÉÒµÎñÍ£»ú¡£

Èç¹ûÉîÈëÑо¿´Ë·½Ê½µÄµ×²ãÔ­Àí£¬Æäʵ¾ÍÊÇÊý¾ÝµÄ¿ìÕÕ¸ôÀë»úÖÆ£¬¼òµ¥µã½«¾ÍÊÇÔÚ´´½¨Ë÷ÒýµÄʱºò£¬½«ÏàÓ¦µÄÊý¾ÝÐÐÌṩÁ˰汾¿ØÖÆ£¬±ÜÃâÁ˺ÍÕý³£ÒµÎñϵͳµÄËøÕùÓôӶø±ÜÃâÁË×èÈû£¬ÊôÓÚÀÖ¹ÛËø»úÖÆÔ­Àí¡£

MAXDOP = max_degree_of_parallelism

ÉèÖò¢Ðмƻ®µÄÊýÁ¿Öµ¡£Õâ¸öÑ¡ÏîÒ²ºÜÓÐÓã¬Èç¹ûÊÇ·ÇÒµÎñ¸ß·¢ÆÚ£¬¿ÉÒÔÊʵ±µ÷¸ß´ËÖµÀ´²¢ÐнøÐÐË÷ÒýµÄ´´½¨£¬¼Ó¿ìË÷ÒýµÄ´´½¨ËÙ¶È¡£

µ±È»£¬Ò²ÊÜÏÞÓÚÎïÀíµÄCPUºËÊý¡£»¹ÓоÍÊǴ˹¦ÄÜÒ²Ö»ÓÐEnterprise°æÌṩ¡£

ALLOW_ROW_LOCKS = { ON | OFF }|ALLOW_PAGE_LOCKS = { ON | OFF }

´Ë·½Ê½Ö¸¶¨ÊÇ·ñÐÐËø»òÕßÒ³Ëø£¬µ±È»£¬Ö»ËùÒÔË÷ÒýµÄ´´½¨ºÍÐ޸Ĵ󲿷ÖÇé¿öÏÂÐèÒªÀëÏß²Ù×÷£¬¾ÍÊÇÒòΪÔÚË÷Òý´´½¨µÄʱºò¼ÓËøÁË¡£ÎªÁ˼ӿìË÷ÒýµÄÉú³É¾Í±ØÐëÌí¼ÓÏàÓ¦µÄËø¡£

Èç¹û ALLOW_ROW_LOCKS = ON ÇÒ ALLOW_PAGE_LOCK = ON£¬Ôò·ÃÎÊË÷ÒýʱÔÊÐíÐм¶¡¢Ò³¼¶ºÍ±í¼¶Ëø¡£Êý¾Ý¿âÒýÇæ½«Ñ¡ÔñÏàÓ¦µÄËø£¬²¢ÇÒ¿ÉÒÔ½«Ëø´ÓÐÐËø»òÒ³ËøÉý¼¶µ½±íËø¡£

Èç¹û ALLOW_ROW_LOCKS = OFF ÇÒ ALLOW_PAGE_LOCK = OFF£¬Ôò·ÃÎÊË÷Òýʱ½öÔÊÐíʹÓÃ±í¼¶Ëø¡£

Ò»¸öÓÐÓõÄË÷ÒýµÄ´´½¨ÐèÒªÄÍÐĵĴ´½¨³öÀ´£¬ÇÐÎð²ÝÂʵÄ³ç½øÐУ¬Èç¹û²Ù×÷²»µ±ÓпÉÄÜ»¹»á²úÉú¸ü¶àÒâÍâµÄÇé¿ö¡£ËùÒÔÒª³ä·Ö°ÑÎÕºÃÊý¾ÝµÄÌØÐÔ£¬ºÏÀíµÄ´´½¨ºÃÿһ¸öÓÐÓõÄË÷Òý¡£

¶þ¡¢Ë÷Òý¹ÜÀí

¾­¹ýÉÏÃæÒ»²½µÄË÷ÒýµÄ´´½¨£¬ÆäʵÔÚÈÕ³£µÄ´ó²¿·Öʱ¼ä¾ÍÐèҪά»¤ºÃË÷Òý¡£¹ØÓÚË÷ÒýµÄά»¤»ù±¾¾Í¼¯ÖÐÔÚÒÔϼ¸¸ö·½Ãæ

a¡¢Ë÷ÒýµÄÖØ½¨

µ±ÎÒÃÇ·¢ÏÖË÷ÒýË÷Òý¸²¸Ç·¶Î§²»¹»»òÕß´æÔÚ´óÁ¿Ë÷ÒýËøÆ¬£¬Ó°ÏìÐÔÄܵÄʱºò£¬ÎÒÃǾÍÐèÒª¶ÔË÷Òý½øÐÐÖØ½¨¡£

Ë÷Òý·¶Î§µÄÎÊÌâÆäʵ´ó²¿·ÖÀ´Ô´ÓÚ¶ÔÓÚT-SQLÓï¾äÐÔÄܵİÑÎÕ£¬Ò²¾ÍÊÇÎÒÃÇÇ°Ãæ¼¸ÆªÎÄÕÂÖзÖÎöµÄÐèÒªµ÷ÓŵÄÄÚÈÝÏî¡£

¶ø¹ØÓÚË÷ÒýË鯬µÄÐγɣ¬Ò²ÊÇÔ´ÓÚÊý¾Ý¿â³¤Ê±¼äµÄÔËÐУ¬´óÁ¿µÄÔöɾ¸Ã²éÔì³ÉÁËB-Tree½á¹¹µÄ²»×¼È·£¬È·ÇеÄ˵ÊDz»ÄÜÕýÈ·µÄÌṩƽºâ²éѯµÄÐÔÄÜ£¬»òÕß´óÁ¿µÄÊý¾Ý·ÖÒ³Ôì³ÉË÷ÒýË鯬£¬½ø¶øÔö´óÁËIO£¬Ó°ÏìÁËÐÔÄÜ¡£

¹ØÓÚË÷ÒýË鯬µÄ²é¿´£¬¿ÉÒÔͨ¹ýÒÔÏÂDMVÓï¾ä½øÐÐ

SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED 
SELECT 
DB_NAME() AS DatbaseName 
, SCHEMA_NAME(o.Schema_ID) AS SchemaName 
, OBJECT_NAME(s.[object_id]) AS TableName 
, i.name AS IndexName 
, ROUND(s.avg_fragmentation_in_percent,2) AS [Fragmentation %] 
INTO #TempFragmentation 
FROM sys.dm_db_index_physical_stats(db_id(),null, null, null, null) s 
INNER JOIN sys.indexes i ON s.[object_id] = i.[object_id] 
AND s.index_id = i.index_id 
INNER JOIN sys.objects o ON i.object_id = O.object_id 
WHERE 1=2 
EXEC sp_MSForEachDB 'USE [?]; 
INSERT INTO #TempFragmentation 
SELECT TOP 20 
DB_NAME() AS DatbaseName 
, SCHEMA_NAME(o.Schema_ID) AS SchemaName 
, OBJECT_NAME(s.[object_id]) AS TableName 
, i.name AS IndexName 
, ROUND(s.avg_fragmentation_in_percent,2) AS [Fragmentation %] 
FROM sys.dm_db_index_physical_stats(db_id(),null, null, null, null) s 
INNER JOIN sys.indexes i ON s.[object_id] = i.[object_id] 
AND s.index_id = i.index_id 
INNER JOIN sys.objects o ON i.object_id = O.object_id 
WHERE s.database_id = DB_ID() 
AND i.name IS NOT NULL 
AND OBJECTPROPERTY(s.[object_id], ''IsMsShipped'') = 0 
ORDER BY [Fragmentation %] DESC' 
SELECT top 20 * FROM #TempFragmentation ORDER BY [Fragmentation %] DESC 
DROP TABLE #TempFragmentation

¿´µ½ÁË£¬Õⲿ·ÖË÷ÒýµÄË鯬µ½´óÁË99%…Õâ¾ÍÐèÒªÎÒÃÇÖØ½¨½øÐÐά»¤ÁË£¬·ñÔò½«ÑÏÖØÍÏ¿åÊý¾ÝµÄÐÔÄÜ¡£

ά»¤µÄ·½Ê½Ò²¾ÍÖ÷Òª¼¯ÖÐÔÚÒÔϼ¸ÖÖ£º

1¡¢Öؽ¨Ë÷Òý

ÕâÖÖ·½Ê½¼òµ¥¸ßЧҲ¾ÍÊÇÎÒÃÇÉÏÃæ·ÖÎöµÄCREATE INDEX ÃüÁîºóÃæ¼ÓÉÏDROP_EXISTING·½Ê½¡£µ±È»¿ÉÒÔÁª»ú²Ù×÷£¬²Ù×÷·½Ê½²Î¿¼ÎÄÕÂÇ°Ãæ

2¡¢ÐÞ¸ÄË÷Òý

ÕâÖÖ·½Ê½ÊÇ05°æ±¾ÒÔºó²ÅÌṩµÄ£¬¼òµ¥µã½«¾ÍÊÇALTER INDEXÃüÁî½øÐС£Æäʵµ×²ãµÄÔËÐз½Ê½Í¬Ë÷ÒýÖØ½¨£¬Ö»²»¹ýÕâÖÖ·½Ê½¸ü¸ÄµÄÑ¡Ïî¶àһЩ¡£

3¡¢Ë÷ÒýÖØ×é

ÕâÖÖ·½Ê½¾ÍÊÇÖØÐÂÌî³äË÷ÒýÀïÃæµÄÊý¾Ý£¬¶ÔÓÚ½â¾öË÷ÒýË鯬µÄ·½Ê½²»ÈçÇ°ÃæÁ½ÖÖÀ´µÄÖ±½Ó¡£²»¹ýÒ²ÊÇÒ»ÖÖÍÆ¼öµÄ·½Ê½£¬ÒòΪ´Ë·½Ê½ÔÚÔËÐеÄʱºò£¬Ò²ÊÇËæÊ±Í£Ö¹¡£

²»ÏñÇ°ÃæÁ½ÖÖ·½Ê½ÎªÔ­×ÓÐÔ²Ù×÷£¬²¢ÇÒÒµÎñ×èÈû¡£

b¡¢Ë÷ÒýµÄ½ûÓÃ

¹ØÓÚË÷ÒýµÄ½ûÓã¬Õâ¸ö¹¦ÄÜÒ²ÊÇSQL Server2005°æ±¾ÒÔºó²Å³öÏÖµÄй¦ÄÜ£¬Õâ¸ö¹¦ÄÜÒ»°ãÓ¦ÓõIJ»¶à¡£

ÒòΪ´ó²¿·ÖÇé¿öϽ«Ë÷Òý½ûÓÃÁË£¬»¹µ¹²»ÈçÖ±½Ó½«Ë÷Òýɾ³ýµôÀ´µÄÖ±½Ó¡£

µ«ÊÇ£¬¼ÇסÁ˼ÈÈ»SQL ServerÉè¼ÆÁËËü¾ÍÊÇÓÐËüµÄÓÃÎäÖ®µØµÄ¡£

ºÜ¶àÇé¿öÏ£¬Êý¾Ý¿âÔÚÔËÐкܳ¤Ò»¶Îʱ¼äÖ®ºó£¬»á·¢Éú»µÒ³µÄÇé¿ö¡£¶øÈç¹ûͨ¹ýÃüÁî²éÕÒ£¬·¢ÏÖËð»µÒ²´¦ÓÚË÷ÒýÏîÉÏ£¬ÄÇôÄãËù×öµÄ²Ù×÷¾ÍÊǽûÓÃÕâ¸öË÷Òý£¨¼ÇסֻÄÜÊǽûÓã©

È»ºóÖØÐ½¨Á¢Ò»¸öÐÂË÷Òý¾Í¿ÉÒÔÁË¡£

ÔÚÕâÖÖÇé¿öÏÂÎÒÃÇ¿ÉÑ¡µÄ×î¿ì´¦Àí·½Ê½¾ÍÊǽûÓøÃË÷Òý£¬ÒòΪһµ©·¢Éú»µÒ³µÄÇé¿ö£¬¸ÃË÷ÒýÏîÊDz»ÔÊÐíɾ³ýµÄ¡£

ºÜ¶àÅóÓÑ¾ÍºÃÆæÁË£¬Ë÷ÒýÀ´Á˸ö½ûÓã¬ÄÇÎÒʲôʱºòÆôÓÃÄØ£¿…….

.ºÙºÙ…Ò»µ©ÎʳöÁË´ËÎÊÌ⣬¾Í˵Ã÷ÁËÄã¶ÔÊý¾Ý¿âµÄÀí½â»¹ºÜdz…»ù±¾ÉÏ»¹ËãûÓÐÈëÃÅÁË……Ò»µ©Ë÷Òý½ûÓþÍÒâζ×ÅÕâ¸öËùÒÔ²»ÔÙά»¤¸üÐÂÁË….²»ÔÙά»¤¸üÐÂÁËÄÇËüÀïÃæµÄÊý¾Ý¾ÍÊǹýʱµÄ»òÕß˵²»×¼È·µÄ…ÄÇ»¹ÆôÓÃËü¸ÉÂï…ÓëÆäÆôÓû¹²»ÈçÖØÐÂά»¤Ò»¸öÄØ…

c¡¢Ë÷ÒýµÄɾ³ý

¹ØÓÚË÷ÒýµÄɾ³ý£¬¾Í²»ÐèҪ̫¶àµÄ½éÉÜÁË£¬Ô­ÒòºÜ¼òµ¥£¬Ë÷ÒýµÄ´æÔÚ»áÓ°ÏìÊý¾Ý²åÈëÊý¾ÝµÄËÙ¶È£¬²¢ÇÒÔÚ²éѯµÄʱºòÐèҪά»¤µÈ¶àµÄËø£¬½ø¶øÓ°Ïì²¢·¢¡£

ËùÒÔ£¬Ò»µ©Ë÷Òý´æÔÚ×ÅÒ»µãÓÅ»¯µÄ×÷ÓÃûÓУ¬ÎÒÃǾÍÒª¼°Ê±µÄɾ³ýµô£¬ÒòΪ°Ùº¦¶øÎÞÒ»ÀûÂï¡£

²é¿´Î´Ê¹ÓõÄË÷ÒýDMV½Å±¾ÈçÏ£º

SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED 
SELECT 
DB_NAME() AS DatbaseName 
, SCHEMA_NAME(O.Schema_ID) AS SchemaName 
, OBJECT_NAME(I.object_id) AS TableName 
, I.name AS IndexName 
INTO #TempNeverUsedIndexes 
FROM sys.indexes I INNER JOIN sys.objects O ON I.object_id = O.object_id 
WHERE 1=2 
EXEC sp_MSForEachDB 'USE [?]; 
INSERT INTO #TempNeverUsedIndexes 
SELECT 
DB_NAME() AS DatbaseName 
, SCHEMA_NAME(O.Schema_ID) AS SchemaName 
, OBJECT_NAME(I.object_id) AS TableName 
, I.NAME AS IndexName 
FROM sys.indexes I INNER JOIN sys.objects O ON I.object_id = O.object_id 
LEFT OUTER JOIN sys.dm_db_index_usage_stats S ON S.object_id = I.object_id 
AND I.index_id = S.index_id 
AND DATABASE_ID = DB_ID() 
WHERE OBJECTPROPERTY(O.object_id,''IsMsShipped'') = 0 
AND I.name IS NOT NULL 
AND S.object_id IS NULL' 
SELECT * FROM #TempNeverUsedIndexes 
ORDER BY DatbaseName, SchemaName, TableName, IndexName 
DROP TABLE #TempNeverUsedIndexes

µ±È»£¬ÕâЩ¼Ç¼¶¼ÊÇ×Ô¶¯SQL ServerÆô¶¯ÒÔÀ´Î´ÔøÊ¹ÓõÄË÷Òý£¬ËùÒÔÔÚÉú²úϵͳÖУ¬Ò»¶¨ÒªÈ·±£ÒѾ­ÔËÐÐÁËÒ»¶ÎÖÜÆÚÁË¡£

Ë÷Òý½Å±¾µÄɾ³ý£¬ºÜ¼òµ¥ºÍ±íɾ³ýÀàËÆ£¬Ö±½Ódropµô¾Í¿ÉÒÔÁË¡£

µ±È»£¬×îºóÔÙÔùËÍÒ»¸öDMV£¬²é¿´ÄÇЩ¾­³£±»´óÁ¿¸üУ¬µ«ÊÇÈ´»ù±¾²»ÊÊÓõÄË÷ÒýÏî

SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED 
SELECT 
DB_NAME() AS DatabaseName 
, SCHEMA_NAME(o.Schema_ID) AS SchemaName 
, OBJECT_NAME(s.[object_id]) AS TableName 
, i.name AS IndexName 
, s.user_updates 
, s.system_seeks + s.system_scans + s.system_lookups 
AS [System usage] 
INTO #TempUnusedIndexes 
FROM sys.dm_db_index_usage_stats s 
INNER JOIN sys.indexes i ON s.[object_id] = i.[object_id] 
AND s.index_id = i.index_id 
INNER JOIN sys.objects o ON i.object_id = O.object_id 
WHERE 1=2 
EXEC sp_MSForEachDB 'USE [?]; 
INSERT INTO #TempUnusedIndexes 
SELECT TOP 20 
DB_NAME() AS DatabaseName 
, SCHEMA_NAME(o.Schema_ID) AS SchemaName 
, OBJECT_NAME(s.[object_id]) AS TableName 
, i.name AS IndexName 
, s.user_updates 
, s.system_seeks + s.system_scans + s.system_lookups 
AS [System usage] 
FROM sys.dm_db_index_usage_stats s 
INNER JOIN sys.indexes i ON s.[object_id] = i.[object_id] 
AND s.index_id = i.index_id 
INNER JOIN sys.objects o ON i.object_id = O.object_id 
WHERE s.database_id = DB_ID() 
AND OBJECTPROPERTY(s.[object_id], ''IsMsShipped'') = 0 
AND s.user_seeks = 0 
AND s.user_scans = 0 
AND s.user_lookups = 0 
AND i.name IS NOT NULL 
ORDER BY s.user_updates DESC' 
SELECT TOP 20 * FROM #TempUnusedIndexes ORDER BY [user_updates] DESC 
DROP TABLE #TempUnusedIndexes

¹ØÓÚÕâЩ½Å±¾£¬¾ÍÒª×Ô¼º×ÃÇ鿼ÂÇÊÇ·ñɾ³ýÁË£¬²»ÄÜÒ»¸Å¶øÂÛ¡£

   
1715 ´Îä¯ÀÀ       27
Ïà¹ØÎÄÕÂ

»ùÓÚEAµÄÊý¾Ý¿â½¨Ä£
Êý¾ÝÁ÷½¨Ä££¨EAÖ¸ÄÏ£©
¡°Êý¾Ýºþ¡±£º¸ÅÄî¡¢ÌØÕ÷¡¢¼Ü¹¹Óë°¸Àý
ÔÚÏßÉ̳ÇÊý¾Ý¿âϵͳÉè¼Æ ˼·+Ч¹û
 
Ïà¹ØÎĵµ

GreenplumÊý¾Ý¿â»ù´¡Åàѵ
MySQL5.1ÐÔÄÜÓÅ»¯·½°¸
ijµçÉÌÊý¾ÝÖÐ̨¼Ü¹¹Êµ¼ù
MySQL¸ßÀ©Õ¹¼Ü¹¹Éè¼Æ
Ïà¹Ø¿Î³Ì

Êý¾ÝÖÎÀí¡¢Êý¾Ý¼Ü¹¹¼°Êý¾Ý±ê×¼
MongoDBʵս¿Î³Ì
²¢·¢¡¢´óÈÝÁ¿¡¢¸ßÐÔÄÜÊý¾Ý¿âÉè¼ÆÓëÓÅ»¯
PostgreSQLÊý¾Ý¿âʵսÅàѵ
×îл¼Æ»®
DeepSeekÔÚÈí¼þ²âÊÔÓ¦ÓÃʵ¼ù 4-12[ÔÚÏß]
DeepSeek´óÄ£ÐÍÓ¦Óÿª·¢Êµ¼ù 4-19[ÔÚÏß]
UAF¼Ü¹¹ÌåϵÓëʵ¼ù 4-11[±±¾©]
AIÖÇÄÜ»¯Èí¼þ²âÊÔ·½·¨Óëʵ¼ù 5-23[ÉϺ£]
»ùÓÚ UML ºÍEA½øÐзÖÎöÉè¼Æ 4-26[±±¾©]
ÒµÎñ¼Ü¹¹Éè¼ÆÓ뽨ģ 4-18[±±¾©]

MySQLË÷Òý±³ºóµÄÊý¾Ý½á¹¹
MySQLÐÔÄܵ÷ÓÅÓë¼Ü¹¹Éè¼Æ
SQL ServerÊý¾Ý¿â±¸·ÝÓë»Ö¸´
ÈÃÊý¾Ý¿â·ÉÆðÀ´ 10´óDB2ÓÅ»¯
oracleµÄÁÙʱ±í¿Õ¼äдÂú´ÅÅÌ
Êý¾Ý¿âµÄ¿çƽ̨Éè¼Æ


²¢·¢¡¢´óÈÝÁ¿¡¢¸ßÐÔÄÜÊý¾Ý¿â
¸ß¼¶Êý¾Ý¿â¼Ü¹¹Éè¼ÆÊ¦
HadoopÔ­ÀíÓëʵ¼ù
Oracle Êý¾Ý²Ö¿â
Êý¾Ý²Ö¿âºÍÊý¾ÝÍÚ¾ò
OracleÊý¾Ý¿â¿ª·¢Óë¹ÜÀí


GE Çø¿éÁ´¼¼ÊõÓëʵÏÖÅàѵ
º½Ìì¿Æ¹¤Ä³×Ó¹«Ë¾ Nodejs¸ß¼¶Ó¦Óÿª·¢
ÖÐÊ¢Òæ»ª ׿Խ¹ÜÀíÕß±ØÐë¾ß±¸µÄÎåÏîÄÜÁ¦
ijÐÅÏ¢¼¼Êõ¹«Ë¾ PythonÅàѵ
ij²©²ÊITϵͳ³§ÉÌ Ò×ÓÃÐÔ²âÊÔÓëÆÀ¹À
ÖйúÓÊ´¢ÒøÐÐ ²âÊÔ³ÉÊì¶ÈÄ£Ðͼ¯³É(TMMI)
ÖÐÎïÔº ²úÆ·¾­ÀíÓë²úÆ·¹ÜÀí