BEGIN
SET @v_index=0;
WHILE @v_index<100000 DO
SET @v_index=@v_index+1;
INSERT INTO myindex (vc_name,vc_city,i_age,i_schoolid) VALUES('name'+@v_index,'city'+@v_index,12,@v_index) ;
END WHILE;
END建了一个存储过程,但是,执行的时候很慢,等了几分钟,停止了,一看只有1000条,刚好1000条,而且,vc_name列和vc_city列的值都是@v_index的值,而不是 ‘name’+@v_index,是不是不是用加号呢? 然后主要问题是怎么样能让他快一点插入很多条数据。谢谢

解决方案 »

  1.   

    CONCAT('name',@v_index),concat('city',@v_index)
    用concat就可以了,怎么可能刚好1000条,是不是你看错了,查询一下
      

  2.   

    DELIMITER $$
    CREATE PROCEDURE DDA()
    BEGIN
    SET @v_index=0;
    WHILE @v_index<100000 DO
    INSERT INTO myindex (vc_name,vc_city,i_age,i_schoolid) VALUES(CONCAT('name',@v_index),CONCAT('city',@v_index),12,@v_index) ;
    SET @v_index=@v_index+1;
    END WHILE;
    END$$
    DELIMITER ;
      

  3.   

    http://www.hzhike.com/School/2011/201106/20110629075432.htmlmysql默认应该是自动提交的,所以,在批量插入数据之前将 set autocommit=0 ;关闭 ,在插入以后,再set autocommit=1 ; 打开事务提交,这样速度提高非常多