建立Clustered索引原則:
1、Primary key,但必須滿足以下條件:A、常用于Where條件,B、插入記錄時(shí)的字段值是隨機(jī)的(不能用于順序增加的字段,否則將增加最后一個(gè)數(shù)據(jù)頁的lock等待時(shí)間)
2、用于范圍查詢的字段,如 col1 between 100 and 200; col12>;62 and <70;
3、用于order by的字段
4、不經(jīng)常改變(update)的字段
5、用于連接條件的字段
其他有關(guān)建立索引的原則:
1、如果索引是唯一的,將其定義為Unique
2、如果使用引用表索引(foreign key ... reference),被引用的列必須建立唯一索引
3、如果建立索引的表有頻繁的插入(Insert)操作,使用fillfactor減少數(shù)據(jù)頁的分裂、提高并發(fā)性能并減少死鎖
4、如果在一個(gè)只讀表上建立索引,將其fillfactor設(shè)為100以盡可能壓縮數(shù)據(jù)和索引空間
5、盡可能減少單個(gè)索引的長度
6、在滿足使用的前提下,盡可能使用小容量的數(shù)據(jù)類型(如用numeric代替char)
7、數(shù)值(numeric)的比較在內(nèi)部操作上比字符(string)略快
8、變長字符串(varchar)和二進(jìn)制(binary)類型比定長(fixed-length)類型需要更多的系統(tǒng)負(fù)載
9、只要可能,使用定長(fixed-length)、非空(non-null)、短(short)的數(shù)據(jù)類型字段作為索引
10、連接條件兩端的索引必須是兼容的(最好是同一類型),如果需要進(jìn)行數(shù)據(jù)轉(zhuǎn)換的話,連接索引將不能發(fā)揮作用
建立復(fù)合字段索引的原則
1、當(dāng)條件內(nèi)不包含復(fù)合索引的第一個(gè)字段時(shí),有兩種可能:A、當(dāng)所有select的字段均包含在復(fù)合索引內(nèi)時(shí),做所有索引頁的遍歷查詢,B、當(dāng)select中包含非復(fù)合索引字段時(shí),做全表數(shù)據(jù)頁的遍歷查詢,既此時(shí)索引對檢索無效。
2、復(fù)合索引優(yōu)點(diǎn):A、提供索引覆蓋(index covering)的機(jī)會,但僅限于所有查詢(select)字段均包含在索引內(nèi),B、當(dāng)查詢條件使用到復(fù)合索引的所有字段時(shí),所需要時(shí)間少于這些字段建立單獨(dú)索引的情況,C、復(fù)合索引有利于強(qiáng)制多個(gè)屬性合并后的唯一性限制
3、復(fù)合索引缺點(diǎn):A、需要更多的索引空間,減少每個(gè)索引頁包含的索引記錄數(shù),并增加索引頁數(shù)目,B、對復(fù)合索引中任何一個(gè)字段的變化(update或insert)都會更新索引,因此復(fù)合索引必須選擇不進(jìn)行變化的字段組成
4、差的復(fù)合索引特點(diǎn):A、復(fù)合索引長度接近于記錄長度,B、復(fù)合索引中只有少量字段用于查詢
1、Primary key,但必須滿足以下條件:A、常用于Where條件,B、插入記錄時(shí)的字段值是隨機(jī)的(不能用于順序增加的字段,否則將增加最后一個(gè)數(shù)據(jù)頁的lock等待時(shí)間)
2、用于范圍查詢的字段,如 col1 between 100 and 200; col12>;62 and <70;
3、用于order by的字段
4、不經(jīng)常改變(update)的字段
5、用于連接條件的字段
其他有關(guān)建立索引的原則:
1、如果索引是唯一的,將其定義為Unique
2、如果使用引用表索引(foreign key ... reference),被引用的列必須建立唯一索引
3、如果建立索引的表有頻繁的插入(Insert)操作,使用fillfactor減少數(shù)據(jù)頁的分裂、提高并發(fā)性能并減少死鎖
4、如果在一個(gè)只讀表上建立索引,將其fillfactor設(shè)為100以盡可能壓縮數(shù)據(jù)和索引空間
5、盡可能減少單個(gè)索引的長度
6、在滿足使用的前提下,盡可能使用小容量的數(shù)據(jù)類型(如用numeric代替char)
7、數(shù)值(numeric)的比較在內(nèi)部操作上比字符(string)略快
8、變長字符串(varchar)和二進(jìn)制(binary)類型比定長(fixed-length)類型需要更多的系統(tǒng)負(fù)載
9、只要可能,使用定長(fixed-length)、非空(non-null)、短(short)的數(shù)據(jù)類型字段作為索引
10、連接條件兩端的索引必須是兼容的(最好是同一類型),如果需要進(jìn)行數(shù)據(jù)轉(zhuǎn)換的話,連接索引將不能發(fā)揮作用
建立復(fù)合字段索引的原則
1、當(dāng)條件內(nèi)不包含復(fù)合索引的第一個(gè)字段時(shí),有兩種可能:A、當(dāng)所有select的字段均包含在復(fù)合索引內(nèi)時(shí),做所有索引頁的遍歷查詢,B、當(dāng)select中包含非復(fù)合索引字段時(shí),做全表數(shù)據(jù)頁的遍歷查詢,既此時(shí)索引對檢索無效。
2、復(fù)合索引優(yōu)點(diǎn):A、提供索引覆蓋(index covering)的機(jī)會,但僅限于所有查詢(select)字段均包含在索引內(nèi),B、當(dāng)查詢條件使用到復(fù)合索引的所有字段時(shí),所需要時(shí)間少于這些字段建立單獨(dú)索引的情況,C、復(fù)合索引有利于強(qiáng)制多個(gè)屬性合并后的唯一性限制
3、復(fù)合索引缺點(diǎn):A、需要更多的索引空間,減少每個(gè)索引頁包含的索引記錄數(shù),并增加索引頁數(shù)目,B、對復(fù)合索引中任何一個(gè)字段的變化(update或insert)都會更新索引,因此復(fù)合索引必須選擇不進(jìn)行變化的字段組成
4、差的復(fù)合索引特點(diǎn):A、復(fù)合索引長度接近于記錄長度,B、復(fù)合索引中只有少量字段用于查詢
![]() 補(bǔ)充一點(diǎn): --創(chuàng)建非聚集索引 1.滿足查詢條件的數(shù)據(jù)不超過20% 2.能實(shí)現(xiàn) index covering 3.用于集函數(shù)、連接、group by和order by的列 4.要權(quán)衡索引對查詢速度的加快與降低修改速度之間的利弊 --刪除影響性能的索引 如果一個(gè)應(yīng)用在白天執(zhí)行數(shù)據(jù)修改,在夜間生成報(bào)表, 就需要在早晨刪除索引,在晚上再把索引重建起來。 另外許多系統(tǒng)設(shè)計(jì)者創(chuàng)建許多優(yōu)化器很少使用的索引, 可以根據(jù)showplan,把沒有用的索引刪除。 |
posted on 2008-07-05 18:45 存鷹之心于高遠(yuǎn),取鷹之志而凌云,習(xí)鷹之性以涉險(xiǎn),融鷹之神在山巔. 閱讀(3604) 評論(0) 編輯 收藏 所屬分類: Sybase