數據庫索引分類


數據庫索引

作用:

提高查詢速度

確保數據的唯一性

可以加速表和表之間的連接,實現表和表之間的參照完整性

使用分組和排序子句進行數據檢索時,可以減少分組和排序的時間

全文檢索字段進行搜索優化

分類:

主鍵索引(PRIMAY KEY)

唯一索引(UNIQUE)

常規索引(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;


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM