2015-09-26 46 views
0

我使用Innodb在MySQL中创建表。该表格将包含来自多个地点的测量结果。大致应当被存储的数据是:MySQL表结构,我需要一个主键吗?

  • monitor_id - 显示器(索引)
  • 时间的标识 - 测量的时间,以秒分辨率(索引)
  • 值 - 电流值

随着时间的推移,每天可能会有数百万个新的行。

我的问题是:

  1. 我需要一个主键?为了我的应用程序,我不需要PK,但数据库可能?如果是这样,使用BigInt是一个坏主意?

  2. 将时间存储为MySQL日期时间不是个好主意吗?或者我应该使用一个整数来存储unix_timestamp?从长远来看,这真的很重要吗?此列将被编入索引。

回答

0
  1. 是的。最好有一些id作为PK。自动增量(BigInt可以)
  2. Int更适合高负荷。更少的数据存储(&索引),但更多的逻辑在应用程序(不在查询中)。
+0

保存PK将添加的存储不是更有利吗?考虑到它需要成为BigInt,我的意思是...... – gregoff

+0

不是很清楚。请重新翻译一下。 (我的英文很差) – M0rtiis

0
  1. 您应该使用主键。有没有理由,以避免主键

Doc

一个表的主键代表列或一组您在最重要的查询使用的列 的。它有一个关联索引, 可以提高查询性能。查询性能优势来自NULL优化,因为它不能包含任何NULL值。使用InnoDB存储引擎 ,表格数据的物理组织结构为 超快速查找并根据主键列或 列进行排序。

  • 如果要存储应使用日期时间字段,否则应该使用时间戳的特定值。例如,您希望将来更新记录,其数据类型应该有时间戳记,因为时间戳记将自动为您更改
  • 相关问题