面试对象线录6 数据库索引

前几天和面试官对线时,发现自己虽然平时用到的数据库索引,but还是对索引的总体了解很少,所以我在这里好好记录一下以供学习和后面的面试官对线时使用,哈哈哈哈哈 在数据库里面,这里说的都是关系型数据库,如果这个库的数据非常爆炸,有上万条或者上亿条,我们就可以用到索引这个工具来提高查询速度;索引可以对一个数据列或者几个数据列一起进行预排序,这样子在查询的时候不用扫描整个表,直接定位到位置,快如闪电,大概意思是算法上说的空间换时间。 当然建立索引时,也不是随便哪个列都适合建的,比如某一列的数据不相同的很多,那么建索引的话,查询的速度相比原来就提升的很快,如果某一列的数据比如性别,只有男和女,那这列的数据建立索引的话也可以建,但是建了以后的速度提升不会很明显,,,所以索引这个东西。。还是在该用的时候来用。 不过有一点要注意的是,一般每个表的主键,数据库会自动给他建索引,因为主键本来就是互不相同的嘛。 接下来要说的就是mysql的索引种类,mysql索引主要分成普通索引,唯一索引,主键索引,组合索引,以及全文索引。

  1. 普通索引(key) 举个例子,下面的这个key就是普通索引,key在数据库中是一个物理结构,他包含两层意思,一层是约束作用,一层是索引作用;
CREATE TABLE `phpcolor_ad` (  
`id` mediumint(8) NOT NULL AUTO_INCREMENT,  
`name` varchar(30) NOT NULL,  
`type` mediumint(1) NOT NULL,  
`code` text,  
PRIMARY KEY (`id`),  
KEY `type` (`type`)  
);
2. 唯一索引 unique key
和主键索引其实也是差不多的,也是要求不能有重复,不过主键索引只能有一个,但是唯一索引可以有很多个,而且,唯一索引可以有一条内容为空。主键就不允许有空值。
3. 主键索引 primary key 
就是上面说的建立在主键上的索引,这种索引每张表只能有一个,而且有主键索引的这个列不允许有空值。
4. 组合索引