數據庫索引sql
做用:數據庫
提升查詢速度優化
確保數據的惟一性spa
能夠加速表和表之間的鏈接,實現表和表之間的參照完整性排序
使用分組和排序子句進行數據檢索時,能夠減小分組和排序的時間索引
全文檢索字段進行搜素優化it
分類:table
主鍵索引(PRIMAY KEY)class
惟一索引(UNIQUE)sql語句
常規索引(INDEX)
全文索引(FULLTEXT)
主鍵索引
主鍵:
某一個屬性組能惟一標識一條記錄
如:學生表(學號,姓名,班級,性別等等),學號時惟一標識的,能夠做爲主鍵
特色:
最多見的索引類型
確保數據記錄的惟一性
肯定特定數據記錄在數據庫中的位置
實例:
CREATE TABLE `表名`(、
`GradeID` INT(11) AUTO_INCREMENT PRIMARY KEY,
#或 PRIMARY KEY(`GradeID`)
)
惟一索引
做用:
避免同一個表中某數據列中的值重複
與主鍵索引的區別
主鍵索引只能有一個
惟一索引可有多個
實例:
CREATE TABLE `Grade`(、
`GradeID` INT(11) AUTO_INCREMENT PRIMARY KEY,
`GradeName` VARCHAR(32) NOT NULL UNIQUE
#或 UNIQUE KEY ` GradeID`(`GradeID`)
常規索引
做用:
快速定位特定數據
注意:
index 和 key 關鍵字均可以設置常規索引
應加在查詢條件的字段
不易添加太多常規索引,影響數據的插入,刪除和修改操做
實例:
##建立表時添加
CREATE TABLE `result`{
//省略一些代碼
INDEX / KEY `ind` (`studentNo`,`subjectNo`)
}
##建立後追加
ALTER TABLE `result` ADD INDEX `ind` (`studentNo`,`subjectNo`);
全文索引
做用:
快速定位特定數據
注意:
只能用於MyISAM類型的數據表
只能用於CHAR ,VARCHAR,TEXT數據列類型
使用大型數據集
實例:
CREATE TABLE `student`(
#省略一些sql語句
FULLTEXT(`StudentName`)
)ENDINE=MYISAM;
ALTER TABLE employee ADD FULLTEXT(`first_name`)
惟一索引補充:
它與前面的普通索引相似,不一樣的就是:索引列的值必須惟一,但容許有空值。若是是組合索引,則列值的組合必須惟一。它有如下幾種建立方式:
CREATE UNIQUE INDEX indexName ON mytable(username(length))
ALTER table mytable ADD UNIQUE [indexName] (username(length))
CREATE TABLE mytable( ID INT NOT NULL, username VARCHAR(16) NOT NULL, UNIQUE [indexName] (username(length)) );
基本索引:
這是最基本的索引,它沒有任何限制。它有如下幾種建立方式:
CREATE INDEX indexName ON mytable(username(length));
若是是CHAR,VARCHAR類型,length能夠小於字段實際長度;若是是BLOB和TEXT類型,必須指定 length。
ALTER table tableName ADD INDEX indexName(columnName)
CREATE TABLE mytable( ID INT NOT NULL, username VARCHAR(16) NOT NULL, INDEX [indexName] (username(length)) );
DROP INDEX [indexName] ON mytable;