我一直试图弄清楚这一点,但到目前为止还没有运气。
哪个更好:具有复合 PRIMARY KEY 或单个 PRIMARY KEY 和 UNIQUE 索引的表?
我的表如下所示:
CREATE TABLE data (
bucket_id INTEGER,
backend_id INTEGER,
unique_id INTEGER,
weight INTEGER,
PRIMARY KEY (bucket_id, unique_id)
) ENGINE=InnoDB
我正在做多个插入。60 亿多行以多值插入的形式插入
INSERT IGNORE INTO data VALUES (x1, x2, x3, x4), (y1, y2, y3, y4), .......)
每行有 500000 行(受客户端限制)。这些都是在应用程序启动时完成的,目前我需要尽可能加快速度。我需要(backend_id,unique_id)的唯一性。虽然我不控制这些,但导入的数据中有重复项。
所以问题是,使用 UNIQUE 索引而不是复合 PRIMARY KEY 会帮助我提高插入语句的速度吗?我知道很多其他因素会影响这一点,例如缓冲池等等。