gpt4 book ai didi

mysql - 选择字符串主键与使用具有相应整数 id 的连接表

转载 作者:行者123 更新时间:2023-11-29 11:05:16 26 4
gpt4 key购买 nike

我有一个大型传感器数据计数表,例如 SENSORS_COUNT,其中的字符串 SID 引用具有相同主键 SID 的另一个表 SENSOR_DEFINITIONS。由于有数百万个数据点,字符串主键上的索引变得 1) 臃肿 2) 缓慢。传感器总数非常小(< 2000)。

我可以考虑 3 种不同的方法来加快查询速度:

  1. 使用连接表将字符串键转换为相应的整数键,并在所有查询中通过连接引用该键
  2. 将字符串/整数翻译作为哈希加载到程序内存中,并在代码中引用它
  3. 在字符串主 ID 上使用索引(但会比整数慢)

我正在尝试为各种传感器构建一个系统,这些传感器可能具有不同类型的字符串 ID(但架构相同)。最好的建议是什么?

编辑1:这是架构。是的(感谢更正),在 SENSORS_COUNT 表中,SID 不是主键

TABLE: SENSOR_DEFINITIONS (2000 records)
SID : VARCHAR(20), PRIMARY KEY
SNAME: VARCHAR(50)

TABLE: SENSORS_COUNT (N million records)
SID: VARCHAR(20)
DATETIME: TIMESTAMP
VALUE: INTEGER

最佳答案

对于“大”表,规范化变得更加重要。特别是当表太大而无法缓存时。

所以,我同意使用SMALLINT UNSIGNED的选择(2 个字节,0..64K)表示 2000 个传感器名称,而不是 VARCHAR(...) .

没有看到 (1) SHOW CREATE TABLE (2) 一些关键的SELECTs ,很难给出进一步的建议。

可能是“复合体”PRIMARY KEY会比 AUTO_INCREMENT 更好。可能是(sensor_id, datetime) ,但首先查看选择会有所帮助。

不要有两个具有相同架构的表(没有充分的理由)。

关于mysql - 选择字符串主键与使用具有相应整数 id 的连接表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41516975/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com