可以一次存多条,如:
insert tablename select 'a','b'
           union select 'c','c'
           union select 'e','f'
           ...对数据再进行处理?你要怎么处理?

解决方案 »

  1.   

    1.提高服务器配置2.用多线程处理(程序设计方面)3.改三层结构,用中间层先分析过滤数据,减轻服务器处理负担及网络传输负担4.批量发送处理语句,不要逐条发送
      例如,多条insert语句可以组合成下面的形式发送:
      insert 表 select 值1
      union all select 值2
      ....
      union all select 值n5.考虑使用服务器集群,平衡负载
      

  2.   

    insert 表 select 值1
      union all select 值2
      ....
      union all select 值n
    的方法好象不太好,因为字符串的连接也是比较耗时的,尤其是长字符串的连接,我就遇见过缓冲表的方法好象比较可行,不过不知道具体如何做,会的人能不能具体说一下关注
      

  3.   

    多线程也不是比较好的方法因为连接数据库毕竟是要一个一个插入的,这里的瓶颈主要还是IO操作,而不是CPU闲置,多线程反而会加大程序的复扎性,问题也没有解决,关键是要让数据一次性插入到数据哭中,不过我也在找比较好的方法呢。也希望楼主知道解决方案后,告诉我以下
      

  4.   

    有点不赞同楼上的说法:首先
    SQL中的每条处理语句都是一个事务,换句话说,你执行100次插入的话,就会进行100次事务处理,而将SQL语句组合成一条的话,就会减少事务处理而在前台组合SQL语句的话,因为前台不存在事务的问题,所以速度当然比数据库中快
    而拼接字符,也不是越大越好,就像你说的,拼接字符串如果长的话,时间花的肯定多.
    其次
    频繁地向数据库发出插入指令,这样肯定会加重服务器的处理负担,造成服务器的I/O拥堵(包括网络的堵塞)
    而如果是花大量时间在程序中去接字符串的话,则千万程序的负担,这时服务器是闲置的.
    所以这是一个负载平衡的问题,就是说要考虑程序中拼多长的字符串,然后就发送到服务器
      

  5.   

    insert 表 select 值1
      union all select 值2
      ....
      union all select 值n