首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PostgreSQL bytea主键

PostgreSQL bytea主键
EN

Stack Overflow用户
提问于 2010-02-23 19:44:08
回答 1查看 2.2K关注 0票数 1

我的数据库中有一个表,用来存储日志。日志文件具有秒精度的时间戳,并存储各种传感器及其源的值:

代码语言:javascript
复制
log_id, log_date, primary_system_source, sub_system_source, values

其中log_id、primary_source和sub_source是整数,值是可变长度字节数组(数据类型: bytea)。

在大多数情况下,组合使用log_id、log_date、primary_system_source和sub_system_source字段作为主键就足够了。不幸的是,由于记录系统中某些行的时间戳的分辨率,区分行的唯一因素是传感器值是否也被添加到主键。

似乎我可以在没有主键(不好?)和在主键中包含values字段之间做出选择。我担心第二种选择,因为我知道它可能会严重损害性能(表将有数亿行)。

关于哪个是最好的解决方案,有什么建议吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2010-02-24 04:36:26

这是一个困难的问题,因为在您刚刚展示的示例中,您的整个行都充当您的主键。由于您的日志没有绝对精度的时间戳,我认为您的日志本身可能不包含唯一值(同一时间段内的两个相似的感官读数)。如果这是真的,那么您就没有任何方法来唯一地标识您的数据,因此不能对其施加唯一约束。

我建议简单地添加一个链接到其他关系的序列PK字段,而不要担心条目的唯一性,因为你无论如何都不能合理地执行它。如果您在特定时间段内拥有的条目数量超过预期,则可以识别重复的日志条目。我不确定性能的影响,但运行SELECT DISTINCT可能比试图强制唯一性更谨慎。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2317766

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档