數據庫索引
作用:
◼提高查詢速度
◼確保數據的唯一性
◼可以加速表和表之間的連接,實現表與表之間的參照 完整性
◼使用分組和排序子句進行數據檢索時,可以顯著減少 分組和排序的時間
◼全文檢索字段進行搜索優化
分類:
◼主鍵索引(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 表名
索引準則
- 索引不是越多越好
- 不要對經常變動的數據加索引
- 小數據量的表建議不要加索引
- 索引一般應加在查找條件的字段