我和 Rick James 就这个问题进行了很长时间的讨论,我们提出了用复合键替换自动增量 pk 的想法,其中 int 限制接近 20 亿。我的表将在几个月内轻松达到此限制,因为我们每月捕获近几亿数据。下面是我的桌子的样子。关键表是gdata
所以我使用 3 个字段组合主表PRIMARY KEY (alarmTypeID,vehicleID,gDateTime)
。然后我有另一个表称为警报表。两者之间的联系是一对多的。这意味着其中的一个数据gdata
可以有零个或多个alarms
与之相关。它们之间的链接是vehicleID
和gDateTime
。
CREATE TABLE `gdata` (
`alarmTypeID` tinyint(4) NOT NULL DEFAULT '0',
`fleetID` smallint(11) NOT NULL,
`fleetGroupID` smallint(11) DEFAULT NULL,
`fleetSubGroupID` smallint(11) DEFAULT NULL,
`deviceID` mediumint(11) NOT NULL,
`vehicleID` mediumint(11) NOT NULL,
`gDateTime` datetime NOT NULL,
`insertDateTime` datetime NOT NULL,
`latitude` float NOT NULL,
`longitude` float NOT NULL,
`speed` smallint(11) NOT NULL
-- (see full text) …
Run Code Online (Sandbox Code Playgroud)