产生的数据没什么规律,目前采用拼接SQL的方式进行插入。INSERT INTO 表名称 ( 值字段 ) 
SELECT 3.1415926
UNION ALL
SELECT 1.0
UNION ALL
SELECT 1.0
......依次循环,但我1000条数据一插,因为貌似不能拼太多。

解决方案 »

  1.   

    肯定跟主键关联的吧,你这个表的ID 是外键 还是另外一个表的是外键?这张表的id是外键
      

  2.   

    能把union all的值放在一张表tb中,然后再insert into select tb插入呢?
      

  3.   

    ado.net 里面有个sqlbulkcopy这个类,挺效率的。
    不知道你用什么方法插入?
      

  4.   

    上面说的对,用sqlbulkcopy,这样可以批量插入数据的,效率就能提高了,你可以网上搜一下的
      

  5.   

    今晚有事,明早回来查sqlbulkcopy吧,先谢谢各位。
      

  6.   

    5秒内10w数据,这些数据在当天回有查询之类的操作码?
    如果没有即时查询之类的业务逻辑的话,建议你先把数据以文件形式存到磁盘,然后每天定时用SSIS 或者 bcp 或者 bulk insert 导入到数据库,这样效率会高些,而且可以避免你的数据库服务器的IO一直处比较高的状态,可以避免数据库层次的IO等待,个人觉得如果业务逻辑允许的话,这样比较好。
    还有一点:SQL Server的传输协议用的是TCP/IP协议,如果做成即时的:每五秒来10w ,就插入10w,这样的话性能很难保证的,万一一天出现个一两次插入失败,那么等待就会让你崩溃了
      

  7.   

    仅仅是插入的话sqlBulkCopy应该差不多了。
    关键是这些数据以后怎么用?
      

  8.   

    如果大批量的插入,使用sqlBulkCopy,这个比单条插入快很多
    主键是不是必须的,不是的话去掉主键