库中有5万多条记录,但有的表字段(type:longtext)特别大(用来存放书的章节,每一章放到一个字段中),我查看整个表对应的文件,已经有900M了,现在通过jdbc(ResultSet,PreparedStatement)一次往表里边插入1000到3000条数据时候,要十多分钟,感觉很慢,有什么方法能提高性能,更快一点啊?现在库只有我一人使用,不会因为大量连接导致慢。
已经对longtext字段做了fulltext索引。

解决方案 »

  1.   

    现在已经用了:
    conn.setAutoCommit(false);addBatch();
    executeBatch();conn.setAutoCommit(true);我直接用jdbc完成插入。
      

  2.   

    写成一条sql语句试试呢,insert into tables value (),(),()......
    一条insert比多条insert效率更高
      

  3.   

    insert into table values (),(),()...... 
      

  4.   

    INSERT INTO table (column1,column2,column3,column4,column5)VALUES (?,?,?,?,?)这是我现在的sql.通过问号使用pst.setXXX(index,content)来设置数据,能写成上边的形式吗?
    是这样:
    INSERT INTO table VALUES (?,?,?,?,?)???
      

  5.   


        [align=center]====  ====
    [/align]
      

  6.   

    不使用大量数据更新时的事务。 事务内发操作过多的话,会导致效率下降。
        [align=center]====  ====
    [/align]
      

  7.   

    1、set @@autocommit = 0;
    2、建议使用INSERT INTO .. VALUES (),(),...();
    3、删掉你的索引,或者alter table yourtablename disable keys;
      

  8.   


    意思就是尽量在一个begin end;块内COMMIT;
      

  9.   

    alter table yourtablename disable keys;  这个起什么作用呢?
      

  10.   

    哈哈,果然快了很多,我的做法:1,insert into tablename set column1=?,...
    2,alert table tablename disable keys;还有没有更好的方法啦,,,请教了。过两三天结贴。:)
      

  11.   

    alert table tablename disable keys;
    这句话写在存储过程中编译通不过啊,我已经把tablename改成我的表名了。
      

  12.   

    alert table tablename disable keys; 
    这句话写在存储过程中编译通不过啊,我已经把tablename改成我的表名了。
    ---------------------------------------------
    alert 改成alter另外建议查查mysql 语法.
    索引会拖慢insert 速度.
    大量插入数据时,可以先关闭索引,然后再重建索引,这个要比直接insert快。手册上是这么建议的。