oracle主键和唯一索引的区别?
区别:oracle在创建主键的同时会生成对应的唯一索引,主键在保证数据唯一性的同时不允许为空,
而唯一索引可以有一个为空的数据项,一个表中只能有一个主键,但是一个主键可以有多个字段,一个表中可以有多个唯一索引。
主键索引和唯一索引的叶子结点区别?
mysql的innodb中,b+树索引只有两种,一个是聚簇索引(主键索引)一个是非聚簇索引(非主键的其他索引,无论是否唯一),聚簇索引索引叶子节点key为主键value包含整行数据,非聚簇索引的叶子节点的key为索引字段value是主键的值。
所以当命中普通索引时查询的字段不在索引中,会先获取到主键的值后再去主键的索引树中获取整行数据,这个称之为回表。
然后覆盖索引(联合索引)就是因为不用回表所以会更快一些。
mysql中是自增主键快还是主键快,为什么,还有主键索引的结构是什么样子的?
首先纠正一楼,索引不一定快,在数据不多的时候,索引反而会托慢查询速度。
其次,系统一般会自动为主键建立唯一索引,但不能说明主键就是一个索引。
再次,主键的值一般不是按字母、数字的顺序排列的,而为其建立索引就是为了克服为一缺陷(索引的值是按顺序排列的)
最后,自增主键就算不建索引的话,速度也不会慢的,因为它的值是按顺序排列的,系统肯定会一个机制来提高查询速度的。
综上可知,自增主键是更快的。
数据库表主键可以索引吗?
可以。表中用来识别表中唯一一条数据的字段就是主键。表的主键具有唯一性和非空性。也就是说,表的主键是唯一性约束和非空约束的组合。
数据库中在创建唯一性约束的时候,数据库产品就会自动创建唯一性索引。因此,表的主键也就是自然拥有了唯一性索引。

