解决四个问题,即可理解索引原理,答案都在下文。
- 为什么要加上主键?
- 为什么加上索引就会使查询变快?
- 为什么加上索引后写入、修改、删除就会变慢?
- 什么情况下同时在两个字段上建立索引?
在某些关系数据库中,如果建表时没有主键,则不允许建表,但有些数据库是允许可以没有主键的,oracle数据库建表就是可以没有主键。无主键、有主键是两种不同的情况。
①、无主键:若一个数据表没有主键,则它的数据无序的放置在磁盘存储器上,一行一行的排列的很整齐,这才是真正的‘表’形式。
②、有主键:若一个数据表加了主键,那么表在磁盘上的存储结构就由整齐的排列结构变成了树状结构(很重要的平衡树)。换句话说,加入了主键,整个表就变成了一个索引。也就是所谓的 “聚集索引”,这也是为什么一个表只能有一个主键,一个表只能有一个 “聚集索引”。
总结:主键的作用就是将 “表” 转换成 “索引(平衡树)”的格式放置。
其中,树中的子节点(除叶子节点外)数据都是由主键字段中的数据构成。也就是通常我们指定主键的id字段。叶子节