標籤:
補充一下,上一章節中約束的一點東西。我們在為約束設定名稱的時候(標識符)推薦寫法“約束縮寫_欄位名”,這樣讓人看起來就會很清晰。例如: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(
屬性名稱 資料類型,
屬性名稱 資料類型,
…
UNIQUE INDEX 索引名(屬性名稱1)
)
2.2、在已經存在的表上建立唯一索引
CREATE UNIQUE INDEX 索引名 ON 表名 (屬性名稱)
2.3、ALTER TABLE建立唯一索引
ALTER TABLE table_name ADD UNIQUE INDEX 索引名 (屬性名稱)
注意:建立唯一索引的時候,如果表中該欄位有為空白值的時候,則唯一索引會建立失敗。
3、建立全文索引
全文索引主要關聯在資料庫中資料類型為CHAR、VARCHAR、TEXT的欄位上,以便能夠更加快速的查詢資料量較大的字串類型的欄位。
3.1 、建立表時建立全文索引
CREATE TABLE table_name(
屬性名稱 資料類型,
屬性名稱 資料類型,
…
FULLTEXT INDEX 索引名(屬性名稱1)
)
3.2、在已經存在的表上建立全文索引
CREATE FULLTEXT INDEX 索引名 ON 表名 (屬性名稱)
3.3、ALTER TABLE建立全文索引
ALTER TABLE table_name ADD FULLTEXT INDEX 索引名 (屬性名稱)
4、通過SQLyog建立索引
右鍵要建立索引的表,選擇改變表菜單,點擊“2個索引”,如所示:
通過SQLyog軟體,我們可以更加方便快捷的建立索引。而且介面也很簡單,易上手。
5、刪除索引
SQL文法:DROP INDEX index_name ON table_name;
通過SQLyog軟體,在表——>索引,點擊節點前面的加號,選中要刪除的索引,右鍵選擇“刪除索引”,根據提示選擇是,成功刪除,
或在改變表的索引列下刪除,上面已經介紹過。
MySQL學習總結(三)索引