一、Oracle/MySQL數(shù)據(jù)庫創(chuàng)建索引的原則
說說所理解的吧,首先要明白對于索引的定義描述。MySQL/Oracle中的的索引是對數(shù)據(jù)庫表中一個(gè)或多個(gè)列的值進(jìn)行排序的結(jié)構(gòu)。索引有助于更快的獲取信息。是用來定位的。
對表中的列是否創(chuàng)建索引,以及創(chuàng)建何種索引,對于查詢的響應(yīng)速度會有很大差別。創(chuàng)建了索引的列幾乎是立即響應(yīng),而不創(chuàng)建索引的列則需要較長時(shí)間的等待。
在數(shù)據(jù)庫系統(tǒng)中創(chuàng)建索引主要有以下作用:
① 加快數(shù)據(jù)檢索;
② 保證數(shù)據(jù)的少數(shù)性;
③ 實(shí)現(xiàn)表與表之間的參照完整性;
④ 在使用GROUP BY、ORDER BY子句進(jìn)行查詢時(shí),利用索引可以減少排序和分組的時(shí)間。
索引是否必須?
1、創(chuàng)建索引需要占用數(shù)據(jù)空間并花費(fèi)一定的時(shí)間
2、建立索引會減慢數(shù)據(jù)修改速度
創(chuàng)建索引要耗一定的系統(tǒng)性能,因此要考察對某列創(chuàng)建索引的必要性。
選擇創(chuàng)建索引的數(shù)據(jù)列:
a.定義有主鍵和外鍵的列
b.在指定范圍中快速或頻繁查詢的列
c.連接中頻繁使用的列
d.需要按排序順序快速或頻繁檢索的列
設(shè)計(jì)索引時(shí),應(yīng)考慮以下數(shù)據(jù)庫準(zhǔn)則。
(1)一個(gè)表如果建有大量索引,會影響INSERT、UPDATE和DELETE語句的性能。
(2)避免對經(jīng)常更新的表進(jìn)行過多的索引,并且索引應(yīng)保持較窄。
(3)使用多個(gè)索引可以提高更新少而數(shù)據(jù)量大的查詢的性能。
(4)對小表進(jìn)行索引可能不會產(chǎn)生優(yōu)化效果。
延伸閱讀:
二、字符集(Character set)是什么
是多個(gè)字符(英文字符,漢字字符,或者其他國家語言字符)的集合,字符集種類較多,每個(gè)字符集包含的字符個(gè)數(shù)不同。
特點(diǎn):
①字符編碼方式是用一個(gè)或多個(gè)字節(jié)表示字符集中的一個(gè)字符
②每種字符集都有自己特有的編碼方式,因此同一個(gè)字符,在不同字符集的編碼方式下,會產(chǎn)生不同的二進(jìn)制
常見字符集:
ASCII字符集:基于羅馬字母表的一套字符集,它采用1個(gè)字節(jié)的低7位表示字符,高位始終為0。
LATIN1字符集:相對于ASCII字符集做了擴(kuò)展,仍然使用一個(gè)字節(jié)表示字符,但啟用了高位,擴(kuò)展了字符集的表示范圍。
GBK字符集:支持中文,字符有一字節(jié)編碼和兩字節(jié)編碼方式。
UTF8字符集:Unicode字符集的一種,是計(jì)算機(jī)科學(xué)領(lǐng)域里的一項(xiàng)業(yè)界標(biāo)準(zhǔn),支持了所有國家的文字字符,utf8采用1-4個(gè)字節(jié)表示字符。