1

我在 MacBook Pro 上尝试在 MySQL 上实现 505,000,000 行表的更新:按照给出的建议,我已经对表进行了分区,tr:

i UNSIGNED INT NOT NULL,
j UNSIGNED INT NOT NULL,
A FLOAT(12,8) NOT NULL,
nu BIGINT NOT NULL,
KEY (nu), key (A)

在 nu 上有一个范围。nu 应该是一个实数,但是因为我只有 6-dp 精度,并且 nu 的最大值是 30000。我将它乘以 10^8 使其成为 BIGINT - 我认为不能使用 FLOAT 或 DOUBLE 值对 MySQL 表进行分区。无论如何,我有 15 个分区(p0:nu<25,000,000,000,p1:nu<50,000,000,000 等)。我在想这应该加快一个典型的选择:

SELECT * FROM tr WHERE nu>95000000000 AND nu<100000000000 AND A.>1.

到仅由相关分区中的数据组成的表上的相同查询的顺序(<30 秒)。但是,如果查询是针对跨越两个(连续)分区的行,则需要 30 分钟以上的时间才能返回分区内查询的行。我意识到我可以只有 15 个不同的表,并分别查询它们,但是有没有办法用分区“自动”执行此操作?有没有人有任何建议?

4

0 回答 0