MySQL學習總結(三)索引

2022-02-14 22:49:45 字數 2842 閱讀 3942

補充一下,上一章節中約束的一點東西。我們在為約束設定名稱的時候(識別符號)推薦寫法「約束縮寫_欄位名」,這樣讓人看起來就會很清晰。例如:fk_deptno,我們通過索引的名字就可以大概知道這是乙個設定的關於deptno欄位的外來鍵。

乙個索引包含表中按照一定順序排序的一列或者多列字段。建立索引主要是為了提高從表中檢索資料的速度。但是建立索引有利也有弊,優點是通過索引,可以提高查詢的速度。但是過多的建立索引會佔據許多的磁碟空間,因此在建立索引的時候一定要權衡利弊。

以下情況適合建立索引:

(1)經常被查詢的字段

(2)經常出現在分組中的字段

(3)表的主鍵或者是外來鍵字段

(4)設定唯一完整性約束的字段

以下情況不適合建立索引:

(1)在查詢中很少被使用的字段

(2)擁有許多重複的值的字段

索引名在設定的時候,建議「index_欄位名」,這樣看起來很清晰。

索引根據建立方式又可以分為兩類,自動索引和手動索引。通過名稱我們可以簡單的理解,自動索引就是自動建立的索引(和廢話一樣。。),在設定表的主鍵或者其他設定完整性約束的時候,mysql系統會自動建立索引。而手動索引,指的是我們主動在表上建立的索引,如下圖所示:

1、建立索引

1.1 、建立普通索引

create table table_name(

屬性名 資料型別,

屬性名 資料型別,

index 索引名(屬性名1)

1.2、在已經存在的表上建立普通索引create index 索引名 on 表名 (屬性名)

1.3、alter table建立普通索引alter table table_name add index 索引名 (屬性名)

2、建立唯一索引

唯一索引,就是在建立索引的時候,限制索引值必須是唯一值,通過該型別的索引可以更快的查詢某條記錄。

2.1 、建立表時建立唯一索引

create table table_name(

屬性名 資料型別,

屬性名 資料型別,

uniqueindex 索引名(屬性名1)

2.2、在已經存在的表上建立唯一索引createuniqueindex 索引名 on 表名 (屬性名)

2.3、alter table建立唯一索引alter table table_name adduniqueindex 索引名 (屬性名)

注意:建立唯一索引的時候,如果表中該字段有為空值的時候,則唯一索引會建立失敗。

3、建立全文索引

全文索引主要關聯在資料庫中資料型別為char、varchar、text的字段上,以便能夠更加快速的查詢資料量較大的字串型別的字段。

3.1 、建立表時建立全文索引create table table_name(

屬性名 資料型別,

屬性名 資料型別,

fulltextindex 索引名(屬性名1)

3.2、在已經存在的表上建立全文索引

createfulltextindex 索引名 on 表名 (屬性名)

3.3、alter table建立全文索引

alter table table_name addfulltextindex 索引名 (屬性名)

4、通過sqlyog建立索引

右鍵要建立索引的表,選擇改變表選單,點選「2個索引」,如下圖所示:

通過sqlyog軟體,我們可以更加方便快捷的建立索引。而且介面也很簡單,易上手。

5、刪除索引

sql語法:drop index index_name on table_name;

通過sqlyog軟體,在表——>索引,點選節點前面的加號,選中要刪除的索引,右鍵選擇「刪除索引」,根據提示選擇是,成功刪除,如圖:

或在改變表的索引列下刪除,上面已經介紹過。

mysql索引學習總結

最近用到mysql索引,趕緊了解了一下,最後做乙個小小的總結。索引,就是按照索引排好序的資料結構,查詢資料的時候走索引比不走索引要快很多,因為不走索引意味著全表掃瞄,而且還可能會鎖住元組,效率比較低。mysql使用b tree的索引模型,無論是myisam還是innodb。為什麼使用b 樹而不是紅黑...

mysql索引學習總結

優勢 劣勢 索引也是一張表,該錶儲存了主鍵與索引字段,並指向實體表的記錄,所以索引也是占用空間的 雖然提高了查詢速度,但是會降低更新表的速度,如果對錶進行insert update 和delete。因為更新表,不僅要儲存資料,還要儲存一下索引檔案每次更新新增了索引列的字段,都會調整更新帶來的兼職變化...

mysql 索引總結 mysql索引總結

mysql中每乙個表都有乙個聚簇索引clusted index,該所索引是預設建立的,除此之外的表上的每乙個非聚簇索引都是二級索引,又叫輔助索引 secondary indexes 以innodb來說,每個innodb表具有乙個特殊的索引稱為聚集索引,如果您的表上定義有主鍵,該主鍵索引是聚集索引,如...