btree索引和hash索引
表中的資料比較小時索引對效能比較小,因為此時索引都被快取到記憶體裡。但如果資料比較多時,記憶體不能完全快取索引資料,此時索引就會對效能有很大影響了。
b-tree索引的特點
以b+樹的結構儲存資料。
b樹索引能夠加快儲存引擎的查詢速度。
b樹索引更加適合進行範圍查詢。
什麼情況下可以用到b樹索引?
全值匹配的查詢 order = 『98765432111990』;
匹配最左字首的查詢
匹配列字首的查詢 order like 『9876%』;
匹配範圍之的查詢 order > 『9876543211990』;
精確匹配左前列並範圍匹配另外一列
只訪問索引的查詢。
雜湊索引的特點:
hash索引是基於hash表實現的,只有查詢條件精確匹配hash索引中的所有列時,才能使用hash索引。
hash索引必須進行二次查詢。
hash索引無法用於排序。
不支援部分索引查詢也不支援範圍查詢。
不適合選擇性很差的列,比如性別。
為什麼要使用索引?
索引大大減少了儲存引擎需要掃瞄的資料量。
索引可以幫助我們進行排序以避免使用臨時表。
索引可以把隨機io變為順序io。
索引會增加寫操作的成本。
太多的索引會增加查詢優化器的選擇時間。
索引的優化策略:
索引列上不能使用表示式或者函式。
字首索引和索引列的選擇性(比如很長的字串的前一部分)。
聯合索引(但是索引不能太多)
1.如何選擇索引列的順序
經常會使用到的列優先。
選擇性高的列優先(重複少)。
寬度小的列優先。
2.覆蓋索引
資料庫重構 讀書筆記
資料庫重構一書是經前面 重構 改善既有 的設計 中提到,想著以往資料庫重構中的多種問題,當時就下單買了,但是當時沒細看,看封面是中文,結果也就封面是中文,內容都是英文,還好前面有些英語基礎就直接看了。此書出版於2007年,在 重構 一書之後,整體結構與部分思想甚至內容有些相似,畢竟都是經驗分享類書籍...
讀書筆記 Oracle資料庫之 分割槽
分割槽 是將乙個表或索引物理的分解為多個更小 更可管理的部分。由於從資料庫中將大段分解成了若干小段 在大型倉庫環境中,通過使用分割槽可以消除很大的資料區間,從而不必考慮他們,相應的根本不用訪問這些資料 但在事務性系統中並不適用,因為這種系統本身就只是訪問少量的資料 可以把修改分布到多個單獨的分割槽上...
MySQL資料庫入門 讀書筆記(三)
第三章 新增資料 為表中所有字段新增資料 insert語句中指定所有欄位名 insetinto student id,name,grade values 1,mike 98.5 順序可以不指定,但必須和values對應insert intostudent name,id,grade values m...