数据库索引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;