我正在创建一个包含四列的Innodb表。
表
column_a (tiny_int)
column_b (medium_int)
column_c (timestamp)
column_d (medium_int)
Primary Key -> column_a, column_b, column_c
从逻辑的角度来看,A,B,C列必须一起制作成PK。但是,为了提高性能并且能够直接从索引中读取(使用索引),我正在考虑一个包含所有4个PK的PK列(A,B,C,D)。
问题
在Innodb表上向主键附加额外列会有什么表现?
注意事项
谢谢!
答案 0 :(得分:1)
在InnoDB中,PRIMARY KEY
索引结构包括所有非关键字段,并将自动使用它们来覆盖索引查询和行消除。除了PRIMARY KEY
索引结构之外,没有单独的“数据”结构。没有必要在PRIMARY KEY
定义本身中添加其他字段。请注意,当它在InnoDB表上使用Using index
时,它不会显示PRIMARY KEY
,因为它是一个不同的代码路径,不会触发添加该消息。
答案 1 :(得分:0)
需要考虑的一些事项:
涵盖了这个概念: http://www.innodb.com/wp/wp-content/uploads/2009/05/innodb-file-formats-and-source-code-structure.pdf http://blog.johnjosephbachir.org/2006/10/22/everything-you-need-to-know-about-designing-mysql-innodb-primary-keys/
...在jeremy的博客文章中: http://blog.jcole.us/2013/01/07/the-physical-structure-of-innodb-index-pages/
因此,对A,B,C的查询将足以有效地获得此Innodb表上的所有值。