[英]Create MySQL table without Primary Key
我有一个不需要主键的表。 它由4列组成,分别是电子邮件,日期,时间,消息。 每次用户登录,注销或执行任何重要的特定操作时,我都会记录电子邮件,日期,时间和操作(消息)。 目前,该表已使用电子邮件作为主键进行设置,但我无法在同一电子邮件中插入多个记录。 我想我可以将时间用作PK,但是有可能两个动作同时出现。 我如何不使用PK就使用桌子? 我尝试将其关闭以用于“电子邮件”列,但它不允许我这样做。
是,因为您已将电子邮件字段定义为主要字段,所以它只能保存唯一数据,并且不允许重复。
因此,您有两种选择:
1:删除电子邮件字段作为主键
2:将新的整数字段添加为具有自动增量的主键(我希望使用此整数)
要决定一个表的主键,首先要考虑以下几点(适用于innodb):
数据在写入后将如何访问(如果不查询,为什么要存储它?)。 如果您关心读取性能,则应按主键查询数据,因为对于innodb,主键是唯一可能的聚集索引。
数据是按主键排序存储的,因此,如果您关心写性能,则应按主键写入理想排序的数据,如果您具有auto_increment,则该数据总是自动发生的。 另外,您未明确为其指定主键的表将具有一个隐藏的auto_increment字段,您将无法访问该字段,即,以相同的成本获得的收益更少。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.