MySQL的深入淺出(五)—— 索引

數據庫索引


作用:

◼提高查詢速度
◼確保數據的唯一性
◼可以加速表和表之間的連接,實現表與表之間的參照 完整性
◼使用分組和排序子句進行數據檢索時,可以顯著減少 分組和排序的時間
◼全文檢索字段進行搜索優化

分類:

◼主鍵索引(PRIMARY KEY)
◼唯一索引(UNIQUE)
◼常規索引(INDEX)
◼全文索引(FULLTEXT)


主鍵索引(PRIMARY KEY)

主鍵:
某一個屬性組能唯一標識一條記錄
如:學生表(學號,姓名,班級,性別等) ,學號就是唯一標識的, 可作爲主鍵

特點:
◼最常見的索引類型
◼確保數據記錄的唯一性
◼確定特定數據記錄在數據庫中的位置

示例:

CREATE TABLE `表名` (
`GradeID` INT(11) AUTO_INCREMENT PRIMARY KEY, #或 PRIMARY KEY(`GradeID`)
)

唯一索引(UNIQUE)

作用: 避免同一個表中某數據列中的值重複
與主鍵索引的區別: 主鍵索引只能有一個 ,唯一索引可有多個
示例:

CREATE TABLE `Grade` (
`GradeID` INT(11) AUTO_INCREMENT PRIMARY KEY,
`GradeName` VARCHAR(32) NOT NULL UNIQUE #或 UNIQUE KEY `GradeID` (`GradeID`)
)

常規索(INDEX)

作用: 快速定位特定數據
注意:
index和key關鍵字都可設置常規索引
應加在查找條件的字段
不宜添加太多常規索引,影響數據的插入、刪除和修改操作
示例:

#創建表時添加
CREATE TABLE `result` ( //省略一些代碼
INDEX/KEY `ind` (`studentNo`,`subjectNo`)
)

#創建後追加
ALTER TABLE `result` ADD INDEX `ind` (`studentNo`, `subjectNo`);

全文索引(FULLTEXT)

**作用:**快速定位特定數據
注意:
只能用於MyISAM類型的數據表
只能用於 CHAR 、 VARCHAR、TEXT數據列類型
適合大型數據集

示例

#創建表時添加
CREATE TABLE `student` ( #省略一些SQL語句
FULLTEXT (`StudentName`)
)ENGINE=MYISAM;

#創建後追加
ALTER TABLE employeeADD FULLTEXT (`first_name`);

管理索引

創建索引
創建表時添加
建表後追加: 語法: ALERT TABLE 表名 ADD 索引類型(數據列名)

刪除索引
DROP INDEX 索引名 ON 表名
ALTER TABLE 表名 DROP INDEX 索引名
ALTER TABLE 表名 DROP PRIMARY KEY

查看索引
SHOW INDEX(或KEYS) FROM 表名


索引準則

  1. 索引不是越多越好
  2. 不要對經常變動的數據加索引
  3. 小數據量的表建議不要加索引
  4. 索引一般應加在查找條件的字段

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章