为什么InnoDB表必须有主键?
Mysql索引设计如此....mysql设计的就是innoDB把你的数据和主键索引用B+Tree来组织的,没有主键他的数据就没有一个结构来存储。即:主键索引就是数据文件本身!!
为什么推荐主键是整形呢?
MySQL查找过程,就是把节点load到内存然后在内存里不断的去进行数据的比对。假设UUID,既不自增也不是整形。问一下,是整形的1<2比较的效率高还是字符串的“abc”和“abe”比较的效率高呢?显然是前者,因为字符串的比较是转换成ASICI一位一位的比,如果最后一位不一样,比到最后才比较出大小,就比整形比较慢多了,存储空间来说,整形更小。索引越节约资源越好。
为什么推荐主键是自增的呢?
- 更方便遍历:如果主键是自增的,那么当遍历数据,从当前节点开始,就可以根据节点间的指针快速找到下一个节点去遍历。
- 更快速的做数据插入操作:在叶子节点上做插入时,主键保持自增的话,就可以直接在上一个主键后方添加即可。避免主键取值不规律而导致的频繁移动。