我需要从数据库中快速取出40w左右的数据,数据库不限,速度越快越好。有大神能给出一个好的解决方案吗?数据量可能还会更多,从海量数据中筛选取出大量数据。

解决方案 »

  1.   

    只能优化数据库,加索引什么的,关于C#代码其实没什么要优化的,顶多将40万条数据用线程加到list里,在绑定在dgv
      

  2.   

    分表,索引,优化SQL语句,增加物理硬件
    就这些呗
      

  3.   

    数据库不限吗?  那就用Elasticsearch啊  别说40W  你就是40E 也很快...
      

  4.   

    问题是你的先估算一下内存大小。40w数据放多大内存??
    所以,只需想想这个,你就知道了。他注定是分批进来,分批处理的。
    也就是java那边的MapReduce过程。
      

  5.   

    Elasticsearch这个东西是搜索啊?和取大数据有什么关系?这么大的数据量一定是io上有关系,内存上有关系。同一个搜索引擎有什么关系。你要这样说单单sqlserver 40W数据搜索也没有问题的。关键楼主要出40W数据。
      

  6.   

    这个和你的数据库设计有关.如果是单纯的关系型数据库,无论是哪一种数据库,一次性取40W条,要快,都很麻烦.
    这种需求. 1 优化数据库.   2 加入NOSQL.
    举个例子说明大体说明.
    根据你的数据结构,例如:表单型的,保存为两个表.  一个表是关系型的,例如: 单据编号(INT64型),单号,商品编号,商品规格,单价,数量,金额.... .再保存另一个表,是类NOSQL设计,使用 XML/JSON/Byte() 这样的格式.  就两字段: 单据编号,单据数据 (XML/JSON/BYTES) . 快速读就从 NOSQL表出数据,然后拼接.
      

  7.   


    赞同, 你要这40万数据做什么啊。   取出来看, 还是计算,   如果光看 , 那就分页啊。  如果要做计算, 那就先计算在取出。需求一定有啊. everything 用过吧  几百万数据都扔到了控件上,也没看有分页啊..
      

  8.   


    赞同, 你要这40万数据做什么啊。   取出来看, 还是计算,   如果光看 , 那就分页啊。  如果要做计算, 那就先计算在取出。需求一定有啊. everything 用过吧  几百万数据都扔到了控件上,也没看有分页啊..
    everything也是一个搜索工具,他们一只展示几十万?还是滚动式加载?
      

  9.   


    赞同, 你要这40万数据做什么啊。   取出来看, 还是计算,   如果光看 , 那就分页啊。  如果要做计算, 那就先计算在取出。需求一定有啊. everything 用过吧  几百万数据都扔到了控件上,也没看有分页啊..这和用什么没关系。  是展示方式,  按理论来说 , 只要内存够大。   别说40万  就是400万也可以一起读出来扔到空间里。  你现在是因为慢要优化,   你就要知道重哪里优化下手
    第一  直接执行语句取出40万 看花多久, 然后在看绑定控件花多久, 在看展示出来花多久, 然后在去优化。 比如查询40万语句就花10秒, 那很想然是库的主键或者 语句问题。  如果取40万就花了1秒, 绑定代码花了9秒, 那就说明 绑定需要优化
      

  10.   


    自己测试一下 是全部显示还是滚动加载..如果我说是一次性加载 你信吗?
    我没有,但是我想还是获取数据不一样。因为从io的角度来看就限制了。
    几十万everything显示的文件名称吗?关键还是我们的显示器怎么一下显示几十万出来,你看到的还是只有一屏啊。现在楼主想的是一次性搞几十万数据到内存里面。
      

  11.   


    自己测试一下 是全部显示还是滚动加载..如果我说是一次性加载 你信吗?
    我没有,但是我想还是获取数据不一样。因为从io的角度来看就限制了。
    几十万everything显示的文件名称吗?关键还是我们的显示器怎么一下显示几十万出来,你看到的还是只有一屏啊。现在楼主想的是一次性搞几十万数据到内存里面。
    你这个话说的不对啊,首先要检索几十万的数据才能把搜索结果给显示出来,关键是检索几十万,而且速度很快
      

  12.   

    提个简单的建议,不知大家觉得怎么样:
    就拿QQ来比例:可以按开头数字来进行检索,比如我的qq是8开头,在检测帐号的时候,先检测8在哪个数据库进行检查,不需要查找全部数据库
      

  13.   

    只做一个主键检索
    用nosql吧
      

  14.   

    场景不明确
    1.数据库里有多少条我们不管,哪怕你有1个亿的数据,怎么快速根据主键过滤,这是DBA操心的事情
    2.你到底是个什么数据库,ES??ES自己根据主键过滤本身就很快
    3.取出数据干啥?用来做计算么?那么听过分布式并行计算么。所以这个不存在什么快速取出大量数据-----这是伪命题。根据主键,索引查询对现在的数据库来说百万数据根本就是一个小case
      

  15.   

    使用SqlBulkCopy吧
      

  16.   

    讨论的可能有点跑题,楼主能再给出详细说明吗?筛选出大量数据?哪里是重点哦,如果真是简单的并发mapreduce尝试了吗?
      

  17.   

    分表,索引,优化SQL语句,增加物理硬件