1. 程式人生 > >mysql的索引

mysql的索引

外鍵 二叉查找樹 關聯 引用 cnblogs 我們 sql 語法 pri

1.是什麽:排好序的快速查找數據結構 在數據之外,數據庫系統還維護著滿足特定查找算法的數據結構,這些數據結構以某種方式引用(指向)數據,這樣就可以在這些數據結構上實現高級查找算法。這種數據結構,就是索引。下圖就是一種可能的索引方式示例: 技術分享 左邊是數據表,一共有兩列七條記錄,最左邊的是數據記錄的物理地址 為了加快Col2的查找,可以維護一個右邊所示的二叉查找樹,每個節點分別包含索引鍵值和一個指向對應數據記錄物理地址的指針,這樣就可以運用二叉查找在一定的復雜度內獲取到相應數據,從而快速的檢索出符合條件的記錄 我們平常所說的索引,如果沒有特別指明,都是指B+樹結構組織的索引。其中聚集索引,次要索引,覆蓋索引, 復合索引,前綴索引,唯一索引默認都是使用B+樹索引,統稱索引。當然,除了B+樹這種類型的索引之外,還有哈稀索引(hash index)等。 2.分類:單值索引:即一個索引只包含單個列,一張表可以有多個單值索引 唯一索引:索引列的值必須唯一,但允許有空值 復合索引:即一個索引包含多個列 3.基本語法 創建:CREATE [UNIQUE ] INDEX indexName ON mytable(columnname(length)); 刪除:DROP INDEX [indexName] ON mytable; 查看:SHOW INDEX FROM table_name\G 修改:ALTER mytable ADD [UNIQUE ] INDEX [indexName] ON (columnname(length)) 有四種方式來添加數據表的索引: ALTER TABLE tbl_name ADD PRIMARY KEY (column_list): 該語句添加一個主鍵,這意味著索引值必須是唯一的,且不能為NULL。 ALTER TABLE tbl_name ADD UNIQUE index_name (column_list): 這條語句創建索引的值必須是唯一的(除了NULL外,NULL可能會出現多次)。 ALTER TABLE tbl_name ADD INDEX index_name (column_list): 添加普通索引,索引值可出現多次。 ALTER TABLE tbl_name ADD FULLTEXT index_name (column_list):該語句指定了索引為 FULLTEXT ,用於全文索引。 4.哪些情況需要建索引: ①主鍵自動建立唯一索引 ②頻繁作為查詢條件的字段 ③查詢中與其他表關聯的字段,外鍵關系建立索引 ④頻繁更新的字段不適合建立索引,因為每次更新不僅更新了記錄,還更新了索引,增加了IO的負擔 ⑤where條件裏用不到的字段不需要建立索引 ⑥單鍵索引/組合索引的選擇問題(在高並發的情況下傾向於組合索引) ⑦查詢中排序的字段 ⑧查詢中統計或者分組的字段

mysql的索引