mysql 索引-【建立索引命令】
阿新 • • 發佈:2019-01-02
上篇講述了一下mysql索引的應用,本篇則主要針對索引命令進行一下總結,依舊拿employees為例說明。
首先要知道索引是在儲存引擎中實現的,也就是說不同的儲存引擎,會使用不同的索引。MyISAM和InnoDB儲存引擎:只支援BTREE索引,也就是說預設使用BTREE,不能夠更換。MEMORY/HEAP儲存引擎:支援HASH和BTREE索引。
主鍵索引、唯一索引:
主鍵和主鍵索引:
- 主鍵一定是唯一性索引,唯一性索引並不一定就是主鍵。主鍵可以保證記錄的唯一和主鍵域非空,資料庫管理系統對於主鍵自動生成唯一索引,所以主鍵也是一個特殊的索引。
- 一個表中可以有多個唯一性索引,但只能有一個主鍵。
- 主鍵列不允許空值,而唯一性索引列允許空值。
索引可以提高查詢的速度。
建立主鍵索引:
//為emp_no建立主鍵索引
alter table employees add primary KEY(emp_no);
建立唯一索引:
//為test表中的seller_id欄位新增唯一索引
alter table test add unique index(seller_id);
普通索引:
MySQL中基本索引型別,沒有什麼限制,允許在定義索引的列中插入重複值和空值,純粹為了查詢資料更快一點。
//為first_name建立唯一索引
alter table employees add index first_name (first_name);
聯合索引:
又稱複合索引;Mysql從左到右的使用索引中的欄位,一個查詢可以只使用索引中的一部份,但只能是最左側部分。例如索引是key index (a,b,c). 可以支援a | a,b| a,b,c 3種組合進行查詢,但不支援 b,c進行查詢 .當最左側欄位是常量引用時,索引就十分有效。
//為employees表中的birth_date, first_name, last_name建立聯合索引
alter table employees add index bd_fn_ln (birth_date, first_name, last_name);
全文索引:
全文索引只能適用於MyISAM引擎,只能在CHAR,VARCHAR,TEXT型別欄位上使用全文索引。全文索引其實就是根據某個關鍵字,全文搜尋,比如有一個欄位內容為“北京博物館拍賣正在進行中……”,那麼當輸入“博物館”幾個關鍵字的時候,則會把該條記錄搜尋出來。
開篇我們提到了INNODB引擎是支援BTREE索引的,也為我們下篇講述索引原理買下伏筆。