MySQL分割槽表與索引

2021-10-03 11:32:55 字數 1033 閱讀 7584

一、定義

簡而言之就是將一張邏輯上仍然完整的表,在物理儲存的過程中,將表上的資料按某種指定的劃分依據,在物理上存放到多個「表空間」(物理檔案上),這樣查詢資料時,不至於每次都掃瞄整張表而只是從當前的分割槽查到所要的資料,這樣大大提高了資料查詢的速度。

優點:

缺點:

二、分割槽表的原理

其實對儲存引擎來說,底層表和普通表來說是沒有什麼區別的,這就像對cpu而言其實本質上所有的物理記憶體都是擁有同等地位的,只不過由於人為的設定才有了核心態與使用者態一樣,那麼儲存引擎會為每乙個底層表都設定相同的索引,這樣就可以實現快速定位與簡單的優化過濾了。

三、分割槽表的型別

通常是根據某一列的資料範圍進行劃分。

建立分割槽表要在使用create table命令時配合partition子句進行劃分,需要注意的是partition子句使用的表示式的返回值要是乙個確定的整數,且不能是乙個常數。如假如使用日期進行分割槽我們就要使用year()或to_days()來進行處理得到乙個具體的整數。

四、分割槽表的使用策略

五、索引

1.建立索引的三種資料結構

2.innodb的索引模型

使用b+樹索引模型,根據主鍵或者非主鍵建立的索引其查詢複雜度不同。使用主鍵建立的索引我們叫做聚簇索引,使用非主鍵建立的索引叫做二次索引。之所以說二次索引不推薦使用就是因為其會先找到主鍵,然後依據主鍵索引繼續查詢,平白做了一點兒無用事。

3.覆蓋索引

在使用非主鍵索引k查詢結果時,若發現查詢結果已經在k索引樹上了的話就不需要去主鍵索引樹上去查詢了,即這個普通索引k索引樹覆蓋了我們的查詢需求,所以稱之為覆蓋索引。

使用覆蓋索引減少了樹的搜尋次數,顯著提公升了查詢效能,所以使用覆蓋索引是乙個常用的效能優化手段。

4.innodb索引和myisam索引的區別

5. innodb與myisam的區別

常見面試題整理–資料庫篇(每位開發者必備)

如何理解關係型資料庫的常見設計正規化?

MySQL分割槽表

分割槽表是一種粗粒度,簡易的索引策略,適用於大資料的過濾場景.最適合的場景是,沒有合適的索引時,對其中幾個分割槽表進行全表掃瞄.或者只有乙個分割槽表和索引是熱點,而且這個分割槽和索引能夠全部儲存在記憶體中.限制單錶分割槽數不要超過150個,並且注意某些導致無法做分割槽過濾的細節,分割槽表對於單條記錄...

mysql分割槽表

對使用者來說,分割槽表是乙個獨立的邏輯表,但是底層由多個物理子表組成。實現分割槽的 實際上是對一組底層表的控制代碼物件的封裝。mysql在建立表時使用partition by子句定義每個分割槽存放的資料。在執行查詢的時候,優化器會根據分割槽定義過濾那些沒有我們需要資料的分割槽,這樣查詢就無須掃瞄所有...

mysql分割槽表 MySQL分割槽表的正確使用方法

mysql分割槽表概述 我們經常遇到一張表裡面儲存了上億甚至過十億的記錄,這些表裡面儲存了大量的歷史記錄。對於這些歷史資料的清理是乙個非常頭疼事情,由於所有的資料都乙個普通的表裡。所以只能是啟用乙個或多個帶where條件的delete語句去刪除 一般where條件是時間 這對資料庫的造成了很大壓力。...