解决方案 »

  1.   

    这里的ID不是主键,而是一个字段名而已,ID有可能为空的
      

  2.   

    SQL SERVER有一个导入数据功能,选择“平面文件数据源”,选中文本文件直接导入。或者使用代码导入也行,这是建立数据库的过程,效率不需要太高,慢点都行的。快速查询,最简单的就是给相应字段添加索引。至于是否非空,没有多大关系~~
    在同一张表中,那可能会出现IO瓶颈,解决的办法就是一张表的记录分开存储在多个磁盘,使用多线程并行查询,再合并得到结果集。
      

  3.   

    1、如果导入是一次性工作的话直接就用SQL自带的导入工具吧。如果非得用TSQL实现,可以试下BULK INSERT。
    2、一般针对NAME/ID建索引。2000W条也不算大。(LZ不会是要玩KF查询吧 :D)
      

  4.   

    多现程不会更快。
    可以用SqlBulkCopyhttp://msdn.microsoft.com/zh-cn/library/system.data.sqlclient.sqlbulkcopy(v=vs.110).aspx
    http://blog.csdn.net/wxwrui335/article/details/6497413
      

  5.   

    别问“sp1234”,他会骂人的,他只以专业开发人员为伍,我刚在论坛发了个贴提问,给他说得狗血淋头
    贴子如下:
    http://bbs.csdn.net/topics/390874699
      

  6.   

    还“狗血淋头”。呵呵。如果csdn有个功能可以识别出你的问题来,我自然不会去回答你的问题。但是你有什么权利在现在这种帖子里这样写呢?你以为你龌龊地在我回复的帖子中捣乱,就能改变我能实际回答 lz 的问题和给以分析的文字的价值,以为这样就报了你的什么“仇”似地,那么你也太幼稚了。
      

  7.   

    就  用SqlBulkCopy,可以设置 每次拷贝的数量,少则几百条,多则上万条。提升查询速度 可以通过创建索引;不要使用in,like等模糊字符查询函数。
      

  8.   

    千万行的数据算比较小的量
    基本上SqlBulkCopy就能搞定
    如果还是觉得磁盘IO不够,可以做成分区表,再加上合理的索引,这样查询/插入的速度都可以保证我们日均千万行的数据也基本上这个思路可以搞定,还有复杂的更新逻辑什么的
      

  9.   

    1.SqlBulkCopy
    2.设置索引,当然,也看你那两个字段的数据情况,越是少重复越快。
      

  10.   


    抱歉,这里的“使用多线程并行查询”可能会引起歧义。我的原意是:客户依然是使用通用的查询语句,但是数据库接收到查询语句并建立一个查询计划后,进行查询优化:这时候使用并行子查询,多个线程查询存储在不同磁盘中的数据库表,每个子查询都获得一个查询结果,最后合并得到一个查询结果集,返回给客户。查询任务结束。
    就是说,数据库查询过程对于客户是透明的,客户并不知道数据库内部使用的是并行多磁盘查询还是普通查询。
    我没有搞过高性能数据库,但这是数据库解决IO瓶颈的一个直观的办法,在主流数据库中可能集成了相关模块和工具。
    多线程解决不了IO瓶颈,你的思路完全错了,主流数据库不会用这样的错误思路。
      

  11.   

    楼主可以考虑 用微软的 BI开发工具。用 SSIS
    http://baike.baidu.com/view/1018273.htm?fr=aladdin