我对MySQL很新,而且我有一个数据库,我将它放在MySQL中用于分析目的。它是由平面文件构建的(每个文件都是几千兆字节),它们被加载并标准化和链接。一旦数据进入,数据就是静态的。更新包括截断所有表并放入新数据,但是它会针对它运行许多要求严格的查询。
几乎所有键都基于10位数字,最后一位数字是校验位。如果我可以将该校验位拆分为一个单独的列,我的密钥可以从8字节的bigint转换为4字节的整数。这应该是一个巨大的性能提升。
通过这些表逐行执行的过程将非常慢(服务器是我的桌面)。有没有更有效的方法将这些最后的数字拆分成一个单独的列?或者我是否完全咆哮错误的树,以为这会提高性能?
提前致谢!
答案 0 :(得分:0)
如果你使用的是64位服务器,那么我怀疑从8byte(64bit)bigints到4byte(32bit)int的移动会给你很多(如果有的话)性能提升 - 你仍然会做得最多一次性操作。不过,它可能会给你一个相当大的空间用于数据库的空间。
如果您想继续尝试,我会说最快的方法是在您进行原始插入时对子键进行子串 - 您已经检索了数据,因此您没有需要SELECT或UPDATE,你只需要在INSERT中做更多的工作......无论如何你都要做。插入额外字段和两个子字符串的开销应该是最小的。