我在MySQL库中上传数据时遇到了一个问题。我有超过3700万随机生成的代码(8位数)。
我想将它们上传到MySQL中的定义表中。我的意思是,我想按代码的开头字母排序,然后上传到相应的表中,例如:如果代码以W开头,则需要在W_codes表中上载,如果代码以1开头,则需要在1_codes表中上传等等。
我有一个C#程序,它自己对代码进行排序,并将代码上传到MySQL,但每100万次代码需要超过6-7个小时。
你有什么更简单的想法,如何做排序,然后上传代码在相应的表?MySQL .sql上传大小限制为128 is。
有什么想法吗?
发布于 2013-05-30 11:43:56
我认为以这种方式划分代码对我来说没有多大意义。时间或地理代码分区将更有意义。
这样的设计肯定违反了一些规范化规则。你的密码应该有一个关系。
对于一个数据库来说,三千七百万不是一个大数字。你觉得你为什么要这么做?
我会将它们全部加载到数据库中的一个表中,看看它是如何执行的。您没有说明表是否有其他值,代码是否是主键,也没有说明用于访问数据的WHERE子句是什么样子的。也许你只是没有正确地索引表。这将使查询时间发生巨大变化。
代码是静态的和只读的吗?还是你也给这张桌子写信?
如果我不得不求助于您所描述的方案,我将使用数据库本身来选择分区表中的数据。对数据库进行了优化,以完成这类工作。
发布于 2013-05-30 11:49:16
我会做以下几点。创建一个临时表。将所有代码插入单个批处理的临时表中。根据第一个字符查询要插入到其他表中的诱惑表。一个简单的where子句应该起作用,没有什么复杂的。不会花很长时间的--只有3700万条记录。
https://stackoverflow.com/questions/16835063
复制相似问题