用了很多年的数据库 很多人可能连主键和索引都不会用,包括我在内
首先要区别索引有聚集索引和非聚集索引
主键可以是聚集索引也可以是非聚集索引,有些数据库默认把主键作为聚集索引
不是任何主键都适合作为聚集索引
举个简单的例子 自增列很适合做为聚集索引,因为物理顺序和自增列的顺序一致,试想,插入数据的时候,数据库是不是要省力的多?因为直接在最后面依次插入就可以了,但是有些时候,设计者可能不希望用自增列作为主键(对业务数据暴露的太裸露),当然可以再添加一列作为主键,将自增列作为聚集索引使用,这也是可以的,单如果没有自增列,比如用一个8位的随机数直接作为主键,那么这个主键还适合聚集索引么?
假如这个数据表需要经常插入数据,进行写操作,因为8位随机数是没有任何排序规则的,每次数据写操作的时候,数据库都要重新找到属于他的位置,进行插入,这个就类似于插队,很明显排队要比插队更省力。频繁的插队更消耗数据库的性能。
所以数据库的主键和索引你真的有认真思考过么?