主键和索引哪个查询效率更快??

1.有次面试被问到,主键和索引哪个查询更快?
有没有哪个高手,能给详细解释下。。。在网上查了下,很多都只是给解释一统,簇聚索引和非簇聚索引,但没有特别明确给出答案。
2.还有个问题是,如果在sql语句使用了函数,还能否给字段建立索引。。
求大侠赐教!

首先你要知道主键索引和普通索引的原理了,普通索引保存的是主键的地址,然后再根据主键去查询,所以要检索两次,主键索引只需要检索一次就性了
可以这么说主键所以只需要检索一次,普通索引要检索两次,

1.1. 主键和索引都有很多种实现方式,对于同一种实现方式来说,速度是一样的
1.2. 主键通常使用聚簇索引。可以认为聚簇索引是一种Hash索引,因此是比较快的
2.用了函数能否建索引?当然是可以的。使用函数作为条件的查询能否用到索引?应该是用不到

(1)主键都是加上索引的。主键的索引是唯一索引,不同的数据库可能不同,有些会有非簇聚索引
(2)当然可以,定义了索引不一定在查询中使用索引,最坏的情况是相当于索引不存在

主键查询效率比索引更快。因为索引有很多种,不能保证都是唯一的。主键必须是唯一的

创建主键的时候会创建唯一索引,查询的时候是索引起到了优化的作用
使用了函数会导致已经创建的索引失效