建立索引的目的是加快對錶中記錄的查詢或排序,索引也並非越多越好,因為建立索引是要付出代價的:增加了資料庫的儲存空間,在插入和修改資料時要花費較多的時間維護索引。
在設計表或索引時,常出現以下幾個問題:
少建索引或不建索引。這個問題最突出,建議建表時 dba 可以一起協助把關。
索引濫用。濫用索引將導致寫請求變慢,拖慢整體資料庫的響應速度(5.5 以下的 mysql 只能用到乙個索引)。
從不考慮聯合索引。實際上聯合索引的效率往往要比單列索引的效率更高。
非最優列選擇。低選擇性的字段不適合建單列索引,如 status 型別的字段。
1.檢視儲存引擎
分析:從圖中可以看出,mysql支援多種儲存引擎,而預設的儲存引擎是innodb。
分析:從上圖可以看出student表的儲存引擎是innodb
2.myisam
(1)定義
(2)myisam的表支援3中不同的儲存格式,分別是靜態(固定長度)表、動態表、壓縮表,其中,靜態表是預設的儲存格式。
(3)特點
(4)適用場景
3.innodb
(1)定義
innodb是乙個健壯的事務型儲存引擎,這種儲存引擎已經被很多網際網路公司使用,為使用者操作非常大的資料儲存提供了乙個強大的解決方案。
(2)特點
(3)適用場合
4.memory
(1)定義
使用mysql memory儲存引擎的出發點是速度。為得到最快的響應時間,採用的邏輯儲存介質是系統記憶體。
(2)特點
(3)使用場景
5.merge
(1)定義
(2)特點
(3)適用場景
6.archive功 能
myisam
memory
innodb
archive
儲存限制
256tb
ram64tb
none
支援事物
nono
yesno
支援b樹索引
yesyes
yesyes
支援全文索引
yesno
nono
支援數索引
yesyes
yesno
支援雜湊索引
noyes
nono
支援資料快取
non/a
yesno
支援外來鍵
nono
yesno
鎖機制表鎖
表鎖行鎖
表鎖1.myisam
2.innodb
3.mysql為什麼使用b+樹作為索引?
(1)為什麼不用hash表儲存?
(2)如何選擇資料結構?
4.聚集索引
2.mysql索引原理及慢查詢優化——美團點評技術部落格
3.mysql索引背後的資料結構及演算法原理
4.b+樹與mysql儲存引擎
5.mysql引起索引失效的原因
如何選擇 MySQL 儲存引擎
不同的儲存引擎都有各自的特點,以適應不同的需求,如表所示。為了做出選擇,首先要考慮每乙個儲存引擎提供了哪些不同的功能。功能mylsam memory innodb archive 儲存限制 256tb ram64tb none 支援事務 nono yesno 支援全文索引 yesno nono 支援...
mysql儲存引擎選擇
常用的儲存引擎為myisam和innodb,其它引擎有ndb cluster merge memory等等。myisam是mysql的預設搜尋引擎,其中的每乙個表都被存放為三個檔案 frm表結構資訊 myd資料檔案 myi索引檔案。myisam支援b tree索引 r tree索引和full tex...
MySQL儲存引擎 選擇
mysql有多種儲存引擎 myisam innodb merge memory heap bdb berkeleydb example federated archive csv blackhole。mysql支援數個儲存引擎作為對不同表的型別的處理器。mysql儲存引擎包括處理事務安全表的引擎和處...