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