ããSQL Serverå建索å¼æ¶ï¼å¯ä»¥æå®Unique使ä¹æ为å¯ä¸ç´¢å¼ãâå¯ä¸â顾åæä¹ï¼ä½æ¯ä¸¤é½å°åºæä»ä¹åºå«å¢ï¼å 为索å¼ä¹æ¯ä¸ç§ç©çç»æï¼æ以è¿æ¯è¦ä»åå¨åç»æä¸åæã
ããç´¢å¼ç»æåå¶çº§åéå¶çº§ï¼åææ¶æ们è¦åå¼æ¥çï¼è¿ä¸ªå¾éè¦ã
ããæä¸æ¶åçç´¢å¼è¡å¤§å°è®¡ç®ï¼åèMSDN估计æ°æ®åºå¤§å°ç´¢å¼é¨åã
ãã1. éå¯ä¸èéç´¢å¼åå¯ä¸èéç´¢å¼
ããå建两个æµè¯è¡¨ï¼å10000æ¡æ´æ°ï¼tb1å¯ä¸ï¼tb2éå¯ä¸ï¼æ1000æ¡ä¸º9999çéå¤å¼ã
ããview sourceprint?
ãã01.<img onclick="this.style.display='none'; document.getElementById('Code_Closed_Text_402704').style.display='none'; document.getElementById('Code_Open_Image_402704').style.display='inline'; document.getElementById('Code_Open_Text_402704').style.display='inline';"id="Code_Closed_Image_402704" align="top" src="" width="11" height="16"style="display: none;"><img alt="å è½½ä¸..." title="å¾çå è½½ä¸..."src="http://www.it165.net/statics/images/s_nopic.gif"><img onclick="this.style.display='none'; document.getElementById('Code_Open_Text_402704').style.display='none'; getElementById('Code_Closed_Image_402704').style.display='inline'; getElementById('Code_Closed_Text_402704').style.display='inline';"id="Code_Open_Image_402704" style="display: none;" align="top" src="" width="11"height="16"><img alt="å è½½ä¸..." title="å¾çå è½½ä¸..."src="http://www.it165.net/statics/images/s_nopic.gif">Codecreate table tb1
ãã02.(col1 int);
ãã03.declare @i int=1
ãã04.while @i<10001
ãã05.begin
ãã06.insert into tb1 values(@i);
ãã07.set @i=@i+1;
ãã08.end;
ãã09.create unique clustered index ucix on tb1 (col1)
ãã10.go
ãã11.-------
ãã12.create table tb2
ãã13.(col2 int);
ãã14.declare @i int=1
ãã15.while @i<9001
ãã16.begin
ãã17.insert into tb2 values(@i);
ãã18.set @i=@i+1;
ãã19.end;
ãã20.go
ãã21.insert into tb2 values(9999)
ãã22.go 1000;
ãã23.create clustered index cix on tb2 (col2)
ãã24.go
ããå æ¥è¯¢ç´¢å¼çä¸äºåºæ¬ç¶åµ:
ããä»ä¸é¢çç»æå¯ä»¥çå°ï¼æ 论æ¯å¶çº§è¿æ¯éå¶çº§ï¼éå¯ä¸èéç´¢å¼çç´¢å¼è¡é½æ¯å¯ä¸ç大ä¸äºï¼æ以æå 页ä¹å¤ä¸ç¹ãå½ç¶ï¼å 为æµè¯æ°æ®å¾å°ï¼åæ¯intï¼æ以ä¸ææ¾ã
ããé£å°åºå¤§å¨åªéå¢ï¼å°ä¸¤è çéå¶çº§é¡µåå¶çº§é¡µæ¾å¨ä¸èµ·æ¯ä¸ä¸å°±ç¥éäºãå æ¾åºé¡µå·ï¼åç¨DBCC PAGEæ¥æ¥çã
ããéè¿Paul S. Randalåçåå¨è¿ç¨sp_allocationMetadataå¯ä»¥æ¥å°æ ¹é¡µåæ¯çº§ç´¢å¼çé¦é¡µã
ããå°±æè¿ä¸¤ä¸ªé¡µå对æ¯ã
ããåç°å¤åºä¸ä¸ªUNIQUIFIERï¼åæ ·å¶çº§ä¹æ¯ä¸æ ·ãMSDN说æï¼
ããâå¦æèéç´¢å¼ä¸æ¯å¯ä¸çç´¢å¼ï¼SQL Server å°æ·»å å¨å é¨çæçå¼ï¼ç§°ä¸ºå¯ä¸å¼ï¼ä»¥ä½¿ææéå¤é®å¯ä¸ãæ¤ååèçå¼å¯¹äºç¨æ·ä¸å¯è§ãä» å½éè¦ä½¿èéé®å¯ä¸ä»¥ç¨äºéèéç´¢å¼ä¸æ¶ï¼ææ·»å 该å¼ãâ
ããè¿æUNIQUIFIERä¸æ¯ä¸ä¸ªå ¨å±èªå¢åï¼éå¤è®°å½å¢å æ¶æ¤å¼ä¼åçæ¹å,并ä¸å®æ¯ä¸ä¸ªå¯ä¸ºnullçåé¿åã
ããç°å¨æ¥ç®ä¸ç®ç´¢å¼è¡å¤§å°ï¼
ãã两个表é½æ¯åªæä¸ä¸ªintåå¯ä¸ºNULLçå段ï¼èèéç´¢å¼å¶çº§æ¯åå¨æ°æ®æ¬èº«
ããå¶çº§æ¯ä¸ä¸ª4åèçINTåï¼æ åé¿åï¼å ä¸3åèçNULLä½å¾ï¼åå ä¸4åèçè¡å¤´å¼éï¼ä¸¤ä¸ªè¡¨çå¶çº§minSize =4+0+3+4=11
ããéå¶çº§æ¯ä¸ä¸ª4åèçINTåï¼æ åé¿åï¼å ä¸3åèçNULLä½å¾ï¼å ä¸1åèçè¡å¤´å¼éï¼åå 6åèçå页æéï¼ä¸¤ä¸ªè¡¨çéå¶çº§minSize=4+0+3+1+6=14
ããtb1çç´¢å¼è¡å¤§å°æ¯ä¸è´çminSize=maxSize,å 为å®æ¯å¯ä¸çãtb2çç´¢å¼è¡å¤§å°ä¸ä¸è´ï¼æ大æå°ï¼å¤§çç´¢å¼è¡æ¯å 为ï¼a)ä¸å¯ä¸ b)UNIQUIFIER
ããå¯ä¸æ è¯åå¢å äº2+1*2+4=8åèå¼éï¼tb2çminåmaxç¸å·®å°±æ¯è¿8åèã
ããtb2çå¶çº§maxSize=4+8+3+4=19
ããtb2çéå¶çº§maxSize=4+8+3+1+6=22
ããå°ç»ï¼éå¯ä¸èéç´¢å¼ä¸ºä¿è¯ç´¢å¼é®å¼å¯ä¸æ§ï¼ä¼çæUNIQUIFIERä¸é®åä¸èµ·ç»æç´¢å¼é®å¼ãåæ¶æ 论å¨å¶çº§è¿æ¯éå¶é¡µçº§ï¼é½æ¯å¯ä¸ç´¢å¼å ç¨æ´å¤åå¨ç©ºé´ã