補充一下,上一章節中約束的一點東西。我們在為約束設定名稱的時候(識別符號)推薦寫法「約束縮寫_欄位名」,這樣讓人看起來就會很清晰。例如:fk_deptno,我們通過索引的名字就可以大概知道這是乙個設定的關於deptno欄位的外來鍵。
乙個索引包含表中按照一定順序排序的一列或者多列字段。建立索引主要是為了提高從表中檢索資料的速度。但是建立索引有利也有弊,優點是通過索引,可以提高查詢的速度。但是過多的建立索引會佔據許多的磁碟空間,因此在建立索引的時候一定要權衡利弊。
以下情況適合建立索引:
(1)經常被查詢的字段以下情況不適合建立索引:(2)經常出現在分組中的字段
(3)表的主鍵或者是外來鍵字段
(4)設定唯一完整性約束的字段
(1)在查詢中很少被使用的字段索引名在設定的時候,建議「index_欄位名」,這樣看起來很清晰。(2)擁有許多重複的值的字段
索引根據建立方式又可以分為兩類,自動索引和手動索引。通過名稱我們可以簡單的理解,自動索引就是自動建立的索引(和廢話一樣。。),在設定表的主鍵或者其他設定完整性約束的時候,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(4、通過sqlyog建立索引屬性名 資料型別,
屬性名 資料型別,
fulltextindex 索引名(屬性名1)
3.2、在已經存在的表上建立全文索引
createfulltextindex 索引名 on 表名 (屬性名)
3.3、alter table建立全文索引
alter table table_name addfulltextindex 索引名 (屬性名)
右鍵要建立索引的表,選擇改變表選單,點選「2個索引」,如下圖所示:5、刪除索引通過sqlyog軟體,我們可以更加方便快捷的建立索引。而且介面也很簡單,易上手。
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表具有乙個特殊的索引稱為聚集索引,如果您的表上定義有主鍵,該主鍵索引是聚集索引,如...