关于主键的描述,大体内容如下,有一条是专门做了声明,主键名为PRIMARY.
- 一个表只能有一个PRIMARY KEY。
- PRIMARY KEY的名称始终为PRIMARY,因此不能用作任何其他类型的索引的名称。
- 如果您没有PRIMARY KEY,而应用程序要求您在表中提供PRIMARY KEY,则MySQL将返回没有NULL列的第一个UNIQUE索引作为PRIMARY KEY。
- 在InnoDB表中,将PRIMARY KEY保持较短,以最小化辅助索引的存储开销。每个辅助索引条目都包含对应行的主键列的副本。
- 在创建的表中,首先放置一个PRIMARY KEY,然后放置所有UNIQUE索引,然后放置非唯一索引,这有助于MySQL优化器确定使用哪个索引的优先级,还可以更快地检测重复的UNIQUE键。
查看主键命名方法7:源代码
在sql_table.cc 里面对主键名称做了定义声明。
const char *primary_key_name="PRIMARY";
顺着这条路,可以看到在不同层的实现中的一些逻辑情况。
小结:
通过这样的一些方式,我们对主键的命名情况有了一个整体的认识,为什么会采用PRIMARY这样一个命名呢,我总结了几点:
1)统一命名可以理解是一种规范
2)和唯一性索引能够区别开来,比如一个唯一性索引非空,从属性上来看很相似的,通过主键命名就可以区分出来,在一些特性和索引使用场景中也容易区分。
3)主键是一个表索引的第一个位置,统一命名可以在逻辑判断中更加清晰,包括字段升级为主键的场景等等。
4)在优化器处理中也会更加方便,提高MySQL优化器确定使用哪个索引的优先级。
以上就是MySQL的主键命名策略相关的详细内容,更多关于MySQL 主键命名策略的资料请关注其它相关文章!
更多相关Mysql内容来自木庄网络博客
标签:Mysql
相关阅读 >>
如何获得mysql结果集中的第n个最高值?使用mysql limit的解决案例
更多相关阅读请进入《mysql》频道 >>

数据库系统概念 第6版
本书主要讲述了数据模型、基于对象的数据库和XML、数据存储和查询、事务管理、体系结构等方面的内容。