MySql优化系列-进阶版造数据(load data statment)-3

本文探讨了使用MySQL的LOAD DATA INFILE语句进行大规模数据导入的高效性。通过Java代码展示了生成不同数据量的用户记录所需时间,并详细介绍了表结构、导入命令及耗时统计。提供了完整的导入数据代码示例和数据样本,以供参考。
摘要由CSDN通过智能技术生成

MySql优化系列-进阶版造数据(load data statment)-3

概述

有时候需要进行造数据的时候,需要很大的灵活性,并且需要进行巨大数据量的生成,如果耗费的时间太多,则十分浪费时间,因为时间都耗费在基础数据的准备上了,而不是解决问题。

MySQL官网指明LOAD DATA statement导入数据十分快(at a very high speed)我们亲自验证一下(get your hand dirty)。

The LOAD DATA statement reads rows from a text file into a table at a very high speed. The file can be read from the server host or the client host, depending on whether the LOCAL modifier is given. LOCAL also affects data interpretation and error handling

数据的准备(JAVA版本)

下表是生成不同数据量的用户记录所耗费时间表格。即一条记录包含id,user_code,user_name,总共3个不重复的字符串。

生成数据量 耗时
1w 9.650875077 秒
10w 76.531126675 秒
100w 773.285521689 秒
    /**
     * 生成自增字符串
     * 思路:数字进位我们都知道(即9->10,99->10),
     *      同理加了小写字母、大些字母、常用汉字进去后,我们也用这样的理论去进位
     *      这样,我们就不用担心生成重复的字符串了。
     * 进位规则:将所有字符都填充到generateMaterialList,默认索引下标大的,值大。
     *          即若[0,9,A,Z,a,z,的,我],则9之后字符就是A;Z之后的字符就是a;我之后就是00,当然可以写成01.
     * 
     * @param previousStr 上一个字符串
     * @param length 要生成字符串的长度
     * @param generateMaterialList 要生成字符串的素材(例如["0","1","a","b","A","B","的","我"])
     * @return
     */
    private static String doGenerateAscStr(String previousStr, int length, List<String> generateMaterialList) {
   
        //构造查找表
        Map<String, Integer> allCharGroup = generateMaterialList.stream().collect(
                Collectors.toMap(
                 item -> {
    return item; },
                 item -> {
   
                    
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值