You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

关于Table_1主键选择、外键设置及表结构的技术咨询

表结构说明

Table_1

TimestampStationValue
2022-08-09T11:15:00+02:00A12
2022-08-09T11:30:00+02:00A15
.........
2022-08-09T11:15:00+02:00X29
2022-08-09T11:30:00+02:00X40

注:Timestamp为15分钟间隔的重复时间戳,包含7天海量时序数据

Table_2

Number_idStation
234562A
452365B
......
352364X

问题解答

1. Table_1应选择哪一列作为Primary Key?

单靠任何一列都无法作为主键——Timestamp、Station都会重复,Value更不具备唯一性。最优方案是用Timestamp + Station作为联合主键,因为每个站点在同一时间点只会有一条记录,这个组合能唯一标识每一行数据。如果担心联合主键在某些场景下使用不便,也可以额外添加自增id列作为代理主键,但必须给Timestamp + Station设置唯一约束,确保数据唯一性。

2. Table_1中的Station列是否应设为关联Table_2的Foreign Key?

必须设置,理由如下:

  • 保证数据一致性:避免Table_1出现Table_2中不存在的Station值,防止脏数据产生
  • 提升关联效率:外键约束会自动在Table_1的Station列创建索引(多数数据库默认行为),后续关联Table_2查询站点信息时速度更快

只要数据写入是规范的(提前在Table_2维护好所有站点),外键带来的写入性能损耗可以忽略,远低于数据不一致带来的后续维护成本。

3. 是否需要调整Table_1的维度?因实际数据量较大。

是否调整取决于你的查询场景:

  • 如果核心查询是按站点查历史时序数据,或按时间段查多站点数据,当前的单条记录结构没问题,但要做好索引优化:给(Station, Timestamp)加复合索引(适配按站点查时间范围的场景),给(Timestamp, Station)加复合索引(适配按时间段查多站点的场景)
  • 如果单表数据量已导致查询卡顿,考虑分表:时序数据优先按时间分(按天/周拆分),也可按Station哈希分表,前者更适配多数时序查询场景
  • 如果以分析类查询为主(如聚合统计),可以做预聚合:提前按小时/天计算每个站点的平均值、最大值等,存入汇总表,减少实时计算压力

内容的提问来源于stack exchange,提问作者AnAn

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.22 16:57:15