如何高效组织MySQL中630万条记录?求表拆分优化指导
MySQL大宗商品库存数据表结构优化咨询
我是数据库新手,希望优化MySQL数据库表结构以实现最快的读写与插入速度。现有主表存储630万+条大宗商品库存数据,用于Web应用,对速度要求极高且每周需更新主数据。数据以文本文件导入,格式如下:
index | maket_indicator|country|commodity|year|month|Thousand Ton| sign 1 STOCK U.K. Soybeans 2013 1 141 * 2 STOCK U.K. Soybeans 2013 2 129 * 3 STOCK U.K. Soybeans 2013 3 82.2 * 4 STOCK U.K. Soybeans 2013 4 127.6 * 5 STOCK U.K. Soybeans 2013 5 120.2 * 6 STOCK U.K. Soybeans 2013 6 136 * 7 STOCK U.K. Soybeans 2013 7 134.6 * 8 STOCK U.K. Soybeans 2013 8 113.2 * 9 STOCK U.K. Soybeans 2013 9 135 * 4186 STOCK U.S.A. Soybeans 2017 8 14852 * 4187 STOCK U.S.A. Soybeans 2017 9 8208.1 4188 STOCK U.S.A. Soybeans 2017 10 99900 * 4189 STOCK U.S.A. Soybeans 2017 11 99900 * 4190 STOCK U.S.A. Soybeans 2017 12 86019.6 4191 STOCK U.S.A. Soybeans 2018 1 78400 * 4192 STOCK U.S.A. Soybeans 2018 2 67500 * 4193 STOCK U.S.A. Soybeans 2018 3 57405.8 4194 STOCK U.S.A. Soybeans 2018 4 50540 * 4195 STOCK U.S.A. Soybeans 2018 5 43722.8 * 4196 STOCK U.S.A. Soybeans 2018 6 33184.7
注:sign字段为业务标识,可选存在。
我发现market_indicator、country、commodity字段重复率极高,初步设计拆分方案:将这三个字段分别拆为独立表并设置索引,示例如下:
表1(market_indicator表)
index | maket_indicator a1 STOCK a2 STOCK a3 STOCK a4 STOCK
表2(country表)
index | country b1 U.K. b2 U.K. b3 U.K. b4 U.K.
表3(commodity表)
index | commodity c1 Soybeans c2 Soybeans c3 Soybeans c4 Soybeans
主表通过关联标识(如a1b1c1)关联这三个表,结构如下:
index | mcc |year|month|Thousand Ton| sign 1 a1b1c1 2013 1 141 * 2 a1b1c1 2013 2 129 * 3 a1b1c1 2013 3 82.2 * 4 a1b1c1 2013 4 127.6 * 5 a1b1c1 2013 5 120.2 * 6 a1b1c1 2013 6 136 * 7 a1b1c1 2013 7 134.6 * 8 a1b1c1 2013 8 113.2 * 9 a1b1c1 2013 9 135 *
恳请专业指导该方案是否合理,或提供更高效的表结构组织方案。
内容的提问来源于stack exchange,提问作者Va SA
相关产品推荐
相关产品推荐

