mysql 索引語法 MySQL索引的基本語法

2021-10-17 15:00:00 字數 1925 閱讀 6900

索引是排好序的資料結構!可以用在 where 條件查詢的字段,和order by 排序的字段,有了索引,便可以快速地定位資料所在的實體地址並找出來。

索引的分類

1.普通索引(normal):沒有任何約束,主要用於提高查詢效率

2.唯一索引(unique):在普通索引的基礎上增加了資料唯一性的約束,可以有多個

3.主鍵索引(primary key):主鍵索引在唯一索引的基礎上增加了不為空的約束,也就是 not null+unique,只能有乙個

4.全文索引(fulltext):mysql 自帶的全文索引只支援英文。

一般使用專門的全文搜尋引擎,比如 es(elasticsearch)

建立索引

#普通索引

alter table 表名 add index 索引名 (column_list);

#唯一索引

alter table 表名 add unique 索引名(column_list);

#主鍵索引

alter table 表名 add primary key 索引名(column_list);

#全文索引(字串資料型別)

alter table 表名 add fulltext 索引名(column_list);

#檢視索引

show index from student \g

這裡用\g 代替分號結束符;可以格式化輸出資料資訊。

#刪除索引

修改表的方式刪除索引

alter table 表名 drop index 索引名;

刪除主鍵索引

alter table 表名 drop primary key;

索引列為一列時為單一索引;

多個列組合在一起建立的索引叫做聯合索引

什麼情況下可以建立索引?

1.欄位的數值有唯一性的限制,比如id

2.頻繁作為 where 查詢條件的字段,尤其在資料表大的情況下

如果在資料量非常大的情況下,沒有 where 條件過濾是非常可怕的。

3.需要經常 group by 和 order by 的列

4.update、delete 的 where 條件列,一般也需要建立索引

原理是因為我們需要先根據 where 條件列檢索出來這條記錄,然後再對它進行更新或刪除,非索引字段更新資料效果更明顯;

如果索引太多了,在更新資料的時候,如果涉及到索引更新,就會造成負擔。

5.distinct 字段需要建立索引

6.做多表 join 連線操作時,建立索引需要注意以下的原則

連線表的數量盡量不要超過 3 張,每增加一張表就相當於增加了 一次巢狀的迴圈,數量級增長會非常快 對用於連線的字段建立索引,並且該字段在多張表中的型別必須一致。

什麼時候不需要建立索引?

索引的價值是快速定位,如果起不到定位的字段通常是不需要建立索引的

1.where 條件(包括 group by、order by)裡用不到的字段不需要建立索引;

2.表記錄太少,比如少於 1000 行,那麼是不需要建立索引;

3.欄位中如果有大量重複資料,也不用建立索引,比如性別字段;

4.頻繁更新的字段不一定要建立索引。因為更新資料的時候,也需要更新索引,如果索引太多,在更新索引的時候也會造成負擔,從而影響效率;

什麼情況下索引失效?

1.如果索引列進行了表示式計算,使用函式,則會失效

2.在 where 子句中,如果在 or 前的條件列進行了索引,而在 or 後的條件列沒有進行索引,那麼索引會失效。

3.當我們使用 like 進行模糊查詢的時候,表示式不能是 % 開始

4.索引列盡量設定為 not null 約束

判斷索引列是否為 not null,往往需要走全表掃瞄,因此我們最好在設計資料表的時候就將字段設定為 not null 約束比如你可以將 int 型別的字段,預設值設定為 0。將字元型別的預設值設定為空字串 ('')

mysql中復合索引語法 MySQL 復合索引

mysql 復合索引 簡介 在本例中,您將了解mysql組合索引以及如何使用它來加速查詢。mysql復合索引簡介 復合索引是多列的索引。mysql允許您建立乙個最多包含16列的復合索引。復合索引也稱為多列索引。查詢優化器將復合索引用於測試索引中所有列的查詢,或者測試第一列,前兩列等的查詢。如果在索引...

mysql 字首索引 語法 MySQL 字首索引

索引字首 使用 字串列的索引規範中的語法,您可以建立僅使用列首字元的索引 以這種方式僅索引列值的字首可以使索引檔案小得多。為a 或 column 編制索引時 必須為索引指定字首長度。例如 col name n nblobtext create table test blob col blob,ind...

mysql 字首索引 語法 mysql字首索引

應用場景 資料庫裡有個位址 address 字段,型別為varchar 100 業務決定了要經常根據address來進行查詢。確定選擇性 sql select count distinct address count as selectivity from info selectivity 0.87...