主要索引类型为:
1,普通索引:普通索引是最基本的索引,它没有任何限制,值可以为空;仅加速查询。
2,唯一索引:唯一索引与普通索引类似,不同的就是:索引列的值必须唯一,但允许有空值。如果是组合索引,则列值的组合必须唯一。
3,主键索引:主键索引是一种特殊的唯一索引,一个表只能有一个主键,不允许有空值。
4,组合索引:组合索引指在多个字段上创建的索引,只有在查询条件中使用了创建索引时的第一个字段,索引才会被使用。使用组合索引时遵循最左前缀集合。
5,全文索引:全文索引主要用来查找文本中的关键字,而不是直接与索引中的值相比较。fulltext索引跟其它索引大不相同,它更像是一个搜索引擎,而不是简单的where语句的参数匹配。。
你说主键和索引有什么区别,个人认为没区别,因为主键是索引的一种,而且是最严格的一种索引,所以个人认为主键和索引没什么区别。
唯一让人感觉有区别的就是主键有约束性(也就是非空和唯一),一般的索引没有约束性。但是也有唯一索引,这些索引也有约束性,所以个人感觉如果非要说主键和索引的区别那么可能就是非空了,不过因为数据库的不同,有些数据库产品在唯一索引上也不允许为空,所以这样二者就没什么区别了。
当然,如果非要说主键和一般索引的区别,那么个人认为就在于主键的约束性上。
外键,外键是依存于主键存在的,没有主键也就没有外键。外键是两张表建立的一种约束与联系,是“强制约束”,类似于“A表有B表才能有,A表没有B表不能有”。外键更多的偏向于约束,并不是索引(个人理解)
至于索引的概念那就多了,有约束(比如非空就是一种约束,但是在某些数据库上将这类约束也作为一个索引单独保存),有一般索引(也就是查询索引),也有索引+约束(比如主键),还有位图索引(oracle有,其他数据库不知道),分区(其实oracle的分区也是一种索引),还有合并索引(这个名字忘记了,类似两张表何用一个字段的那种,好像叫这个)以及反索引等等,这些都叫做索引。
综上个人认为,主键和索引的区别一般来说是体现在约束上,当然索引不能被引用为外键,主键可以,这个是在应用上的一个区别。而外键则不是索引,仅仅是依存于主键的一种便捷检查(约束)方式。
1、应用范畴不同:
主键属于索引的一种。在数据库关系图中为表定义主键将自动创建主键索引,主键索引是唯一索引的特定类型。该索引要求主键中的每个值都唯一。当在查询中使用主键索引时,它还允许对数据的快速访问。
2、种类不同:
根据数据库的功能,可以在数据库设计器中创建三种索引:唯一索引、主键索引和聚集索引。而,主键只是其中的一种。
3、创建方式不同:
当创建或更改表时可通过定义 PRIMARY KEY 约束来创建主键。一个表只能有一个 PRIMARY KEY 约束,而且 PRIMARY KEY 约束中的列不能接受空值。由于 PRIMARY KEY 约束确保唯一数据,所以经常用来定义标识列。经常在WHERE子句中的列上面创建索引。
扩展资料:
索引的相关作用:
1、通过创建唯一性索引,可以保证数据库表中每一行数据的唯一性。
2、可以大大加快数据的检索速度,这也是创建索引的最主要的原因。
3、可以加速表和表之间的连接,特别是在实现数据的参考完整性方面特别有意义。
4、在使用分组和排序子句进行数据检索时,同样可以显著减少查询中分组和排序的时间。
5、通过使用索引,可以在查询的过程中,使用优化隐藏器,提高系统的性能。
参考资料来源:百度百科-数据库索引
参考资料来源:百度百科-数据库主键
本文转载自互联网,如有侵权,联系删除