mysql的儲存引擎表示的是mysql中資料庫表的儲存型別,不同儲存型別,表的儲存方式都不相同。
檢視當前mysql版本支援哪些引擎,可以輸入以下命令:
mysql>
show engines\g
可以發現有很多儲存引擎,這裡只討論innodb、myisam、memory這三種。
innodb
innodb的表儲存成3個檔案。檔案的名字與表名相同。拓展名為frm、idb,.frm儲存表的結構, .idb儲存表的資料和索引
myisam
myisam的表儲存成3個檔案。檔案的名字與表名相同。拓展名為frm、myd、myi,
.frm儲存表的結構 ,.myi表的索引, .myd表的資料
memory
memory是mysql中一類特殊的儲存引擎。它使用儲存在記憶體中的內容來建立表,而且資料全部放在記憶體中。
總結:方式一:在建立表的時候指定儲存引擎
create
table table_name (
屬性名 資料型別 完整性約束,..
.屬性名 資料型別 完整性約束
)engine
=innodb
default
charset
=utf8;
方式二:修改已存在表的儲存引擎
alter
table table_name engine
=innodb
;
方式三:修改配置檔案
mysql server啟動的時候都會載入乙個配置檔案,windows下是my.ini檔案,linux下是my.cnf檔案,開啟配置檔案,在[mysqld]下面新增如下內容,儲存,重啟mysql server伺服器,預設就採用配置項指定的儲存引擎了。記得操作之後一定要儲存再重新啟動mysql服務
索引是建立在表上,是對資料庫表中一列或多列的值進行排序的一種結構。索引和表中屬性有很大關係,要通過屬性排序後的結果建立結構。
索引結構儲存在檔案中:innodb引擎下:.ibd檔案 myisam:.myi檔案。
索引有兩種儲存型別:b樹形索引 、雜湊索引;innodb和myisam儲存引擎支援b樹形索引,memory支援b樹形索引、雜湊索引,預設b樹形索引。
索引的優點:提高查詢速度
索引的缺點:索引需要占用物理空間 ,索引儲存在檔案中,索引多了,儲存的資料變少了,建立和維護索引需要耗費時間 頻繁修改表中資料,也會造成索引結構的頻繁修改,消耗時間,效能降低。
普通索引:建立普通索引時,不新增任何限制條件,對屬性完整性約束沒有要求
(建立表的同時建立索引)
create
table table_name(
屬性名 資料型別 完整性約束,..
..屬性名 資料型別 完整性約束,
index
(屬性名)
);
唯一性索引:使用unique引數設定索引為唯一性索引。必須保證屬性是唯一的(即屬性有主鍵約束或者唯一性約束)。主鍵是特殊的唯一性索引
(建立表的同時建立索引)
create
table 表名(
屬性名 資料型別 完整性約束,..
..屬性名 資料型別 完整性約束,
unique
index 索引名(屬性名)
);
全文索引:使用fulltext引數設定索引為全文索引。全文索引只能建立在char、varchar、text型別的字段上。查詢資料量較大的字串型別字段,使用全文索引可以提高查詢效率.只有myisam儲存引擎支援全文索引。
(建立表的同時建立索引)
create
table 表名(
屬性名 資料型別 完整性約束,..
..屬性名 資料型別 完整性約束,
fulltext index 索引名(屬性名)
)engine
=myisam;
單列索引:在表中單個字段建立索引。單列索引只根據該列進行查詢
(建立表的同時建立索引)
create
table 表名(
屬性名 資料型別 完整性約束,..
..屬性名 資料型別 完整性約束,
index 索引名(屬性名)
);
多列索引:在表中多個字段建立索引。
(建立表的同時建立索引)
create
table 表名(
屬性名 資料型別 完整性約束,..
..屬性名 資料型別 完整性約束,
index 索引名(屬性名1
,屬性名2,...
));
空間索引:使用spatial引數設定索引為空間索引。空間索引只能建立在空間資料類上。
空間資料型別包括geometry、point、linestring、polygon等。只有myisam儲存引擎支援空間資料檢索,且索引字段不能為空值。
create
table 表名(
屬性名 資料型別 完整性約束,..
..屬性名 資料型別 完整性約束,
spatial index 索引名(屬性名)
)engine
=myisam;
在已存在的表上建立索引
create
(unique\fulltext\spatial)
index 索引名 on 表名 (屬性名);
alter
table 表名 add
(unique\fulltext\spatial)
index 索引名(屬性名);
刪除索引:
drop
index 索引名 on 表名;
(1)如果表中的資料較少,不需要建立索引
(2)選擇唯一性索引。屬性不重複
(3)為經常需要排序、分組和聯合操作的字段建立索引
(4)為經常作為查詢條件的字段建立索引
(5)限制索引的數目
(6)盡量使用資料量少的索引
(7)盡量使用字首來索引
(8)刪除不再使用或使用很少的索引
MySQL的索引和儲存引擎
參考文章內容 mysql索引 黃文博 mysql入門教程 mysql tutorial book 二 關於索引 資料庫儲存引擎是資料庫底層軟體組織,資料庫管理系統 dbms 使用資料引擎進行建立 查詢 更新和刪除資料。不同的儲存引擎提供不同的儲存機制 索引技巧 鎖定水平等功能,使用不同的儲存引擎,還...
MySQL索引 事務 儲存引擎
索引建立的方法 建立索引的原則依據 檢視索引的方法 刪除索引的方法 事務的概念 事務的acid特點 事務控制語句 事務的控制方法 儲存引擎概念介紹 業選擇儲存引擎依據 修改儲存引擎 注 no unique為0 注 no unique為1 注 屬於唯一性索引的一種 直接建立索引 修改表結構方式新增索引...
MySQL索引和引擎
在使用mysql或其他資料庫的時候,往往需要給表新增索引,這樣一般可以給資料的查詢速度帶來極大的提公升。索引,可以理解成一本書的目錄,用於快速了解和定位書本中的內容。而在mysql中,索引是幫助其高效獲取資料的 已排好序的資料結構 比如現在,mysql中有這麼一張表 test,需要進行查詢 sele...