innodb 引擎主鍵選擇以及索引的優缺點
在 innodb 中,每張表都有個主鍵(primary key),如果在建表時沒有顯式地定義主鍵,則 innodb 引擎會按照如下方式選擇或建立主鍵:
首先判斷表中是否有非空的唯一索引(unique not null),若有,則該列即為主鍵(當表中有多個非空唯一索引時,innodb 儲存引擎將選擇建表時第乙個定義的非空唯一索引為主鍵);
若不符合上述條件,innodb 儲存引擎自動建立乙個 6 位元組大小的隱藏列(row_id)作為主鍵。
因此,建表時最好顯式指定主鍵。
索引優缺點
1.主要優缺點如下(可通過上述儲存結構分析理解):
優點1.可以提高資料檢索效率,降低資料庫 io 成本;
2.對記錄進行排序,降低 cpu 消耗(被索引的列會自動進行排序),可以提高排序和分組查詢的效率。
缺點1.索引會占用磁碟空間;
2.降低更新效率(更新操作會同步更新索引)。
3.索引使用場景
需要建立索引的場景
1.主鍵自動建立唯一索引;
2.頻繁作為查詢條件的字段應該建立索引;
3.多表關聯查詢中,關聯字段應該建立索引(on 兩邊都要建立);
4.查詢中排序的字段,應該建立索引;
5.統計或者分組。
不需要使用索引的場景
1.表記錄太少;
2.頻繁更新;
3.查詢字段使用頻率不高。
InnoDB引擎以及合適選擇
innodb引擎 1.innodb表的自動增長列插值時插入null或者0,實際插入的會是自動增長後的值。2.強制設定自動增長列的初始值,語句 alter table auto increment n 3.select last insert id 查詢當前執行緒最後插入記錄使用的值。4.對於inno...
InnoDB儲存引擎為什麼選擇B 樹構建索引
索引是對資料庫表中乙個或多個列的值進行排序的資料結構,以協助快速查詢 更新資料庫表中資料。在mysql中,索引是在儲存引擎層實現的,所以並沒有統一的索引標準,即不同儲存引擎的索引的工作方式並不一樣。而即使多個儲存引擎支援同一種型別的索引,其底層的實現也可能不同。索引加速了資料訪問,因為儲存引擎不會再...
表的引擎選擇InnoDB
從innodb與myisam的區別及支援場景來說明,並給出一些比較明顯的特性和注意點。效能角度 1.myisam型別的表強調的是侷限場景下的效能,其單執行緒只插入或只讀取比innodb型別更快。主要因為myisam使用的表鎖的開銷小於innodb的行鎖開銷,另外myisam實現簡單,在讀取到索引後直...