打造扛得住的資料庫架構讀書筆記(七)

2021-09-10 05:49:52 字數 1107 閱讀 3401

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...