我有一个庞大的数据库,其中大多数字段都是长字符串(DNA 序列)。目前它大约有 5 亿行。对于我的初始表,我只想要实现到此数据结构中的所有 5 亿行。
Non_unique | Key_name | Seq_in_index | Column_name | Collation | Cardinality | Sub_part | Null
0 | PRIMARY | 1 | prim_id | A | 2654074 | NULL | NULL |
1 | cdr3seq | 1 | cdr3seq | A | 2654074 | NULL | NULL |
1 | cdr3aa | 1 | cdr3aa | A | 2654074 | NULL | NULL |
1 | v_gene | 1 | vg | A | 53081 | NULL | NULL |
1 | d_gene | 1 | dg | A | 46562 | NULL | NULL |
1 | j_gene | 1 | jg | A | 14269 | NULL | NULL |
1 | donor | 1 | donor | A | 1092 | NULL | NULL |
1 | seq_id | 1 | seq_id | A | 2654074 | NULL | NULL |
1 | seq | 1 | seq | A | 2654074 | NULL | NULL |
它们都是 B-tree 并且属于同一个表(省略适合 - 忽略基数,这是从上传过程中获取的)。我只需使用 auto_increment 主 ID (prim_id) 即可轻松上传此表。但是当我添加索引时,需要永远写出巨大的临时表。另一方面,如果我先设计表格,则上传需要很长时间。我缺少一些 sql server 选项吗?我目前正在运行一个 Innodb 引擎。等待索引是不可避免的吗?我必须这样做的原因是因为所有这些列最终都会在某个时候被分组。例如,我想从该表创建另一个表,该表只是唯一的seq
,但如果不首先对该表进行索引,则无法执行此操作。我会以正确的方式解决这个问题吗?
此外,对于唯一表,我也尝试过重新上传具有唯一seq
索引字段的数据文件。这也花费了太多时间。
非常感谢,
PS,我有一个 24 核 64GB 服务器,我正在使用这些数据。