大胆猜测导致插入缓慢的原因应该是MYSQL的自动提交 ,如果批量插入时,建议先暂时关闭自动提交,不然的话会每插入一条记录会自动提交一下,这样会影响插入效率。
 如果方便请共享一下表结构和插入SQL脚;

解决方案 »

  1.   

    BEGIN
    #Routine body goes here...
    DECLARE i INT DEFAULT 0;
    set i=1;
    WHILE i<10000 DO
     INSERT INTO demo_type(code,NAME) VALUES('你好','nnihao');
    set i=i+1;
    END WHILE;
    END写的sql脚本。里面还有个id是自增字段。
      

  2.   

    通过workbench,查看配置文件
    set audo commit 没有开。也就是默认不是自动提交的。
      

  3.   

    这不是1w条吗 怎么标题写的150条  另外duration也不是6秒啊
      

  4.   

    我是把其中的复制出来直接,在查询中执行的。
    执行了150条。
    也就是这样的
    explain
    INSERT INTO demo_type(code,NAME) VALUES('你好','nnihao');
    INSERT INTO demo_type(code,NAME) VALUES('你好','nnihao');
    INSERT INTO demo_type(code,NAME) VALUES('你好','nnihao');
    INSERT INTO demo_type(code,NAME) VALUES('你好','nnihao');
      

  5.   

    没有自动提交,自增ID怎么来的?还有在插入SQL脚本中并没有出现类似于提交(commit)关键字,你的插入的数据是永久保存还识仅在本次会话中有效 ?
      

  6.   

    顺便检查一下 数据库服务器 上的自动提交是否开启 ;还有查看数据库表引擎是什么类型? 有没有设置 查询优先 (降低UPDATE优先级,设置查询优先)....
      

  7.   

    应该是每次的自动commit的问题。
    如果把表的引擎设置为innoDB,就可以使用事务来设置自动提交的问题。
    BEGIN
        #Routine body goes here...
    DECLARE i INT DEFAULT 0;
    set i=1;
    START TRANSACTION;
    WHILE i<10000 DO
     INSERT INTO demo_type(code,NAME) VALUES('你好','nnihao');
    set i=i+1;
    END WHILE;
    COMMIT;
    END