我需要从数据库中快速取出40w左右的数据,数据库不限,速度越快越好。有大神能给出一个好的解决方案吗?数据量可能还会更多,从海量数据中筛选取出大量数据。
解决方案 »
- 将Excel作为网格控件
- socket networkstream
- 怪怪的转换Convert.ToChar(tem).ToString()
- 用什么符号是屏蔽一段代码,用//是该行,现在很多行。
- 求教!
- 100M以上的大容量DataSet打开速度如何优化?
- C#画图程序中怎么实时得到所画线的长度?
- C#中操纵Excel数学函数?谁能指点我
- C#设计贪吃蛇的界面问题
- dev控件 xtrareports中数据
- 利用栈的基本操作实现将任意一个十进制整数转化为二进制和八进制整数(我是用新学的c#写的,但是运行结果老是不对,试了多次也找不到问题,求大佬相助)
- 求助,c#如何读取本地图片然后存到数据库!!!
就这些呗
所以,只需想想这个,你就知道了。他注定是分批进来,分批处理的。
也就是java那边的MapReduce过程。
这种需求. 1 优化数据库. 2 加入NOSQL.
举个例子说明大体说明.
根据你的数据结构,例如:表单型的,保存为两个表. 一个表是关系型的,例如: 单据编号(INT64型),单号,商品编号,商品规格,单价,数量,金额.... .再保存另一个表,是类NOSQL设计,使用 XML/JSON/Byte() 这样的格式. 就两字段: 单据编号,单据数据 (XML/JSON/BYTES) . 快速读就从 NOSQL表出数据,然后拼接.
赞同, 你要这40万数据做什么啊。 取出来看, 还是计算, 如果光看 , 那就分页啊。 如果要做计算, 那就先计算在取出。需求一定有啊. everything 用过吧 几百万数据都扔到了控件上,也没看有分页啊..
赞同, 你要这40万数据做什么啊。 取出来看, 还是计算, 如果光看 , 那就分页啊。 如果要做计算, 那就先计算在取出。需求一定有啊. everything 用过吧 几百万数据都扔到了控件上,也没看有分页啊..
everything也是一个搜索工具,他们一只展示几十万?还是滚动式加载?
赞同, 你要这40万数据做什么啊。 取出来看, 还是计算, 如果光看 , 那就分页啊。 如果要做计算, 那就先计算在取出。需求一定有啊. everything 用过吧 几百万数据都扔到了控件上,也没看有分页啊..这和用什么没关系。 是展示方式, 按理论来说 , 只要内存够大。 别说40万 就是400万也可以一起读出来扔到空间里。 你现在是因为慢要优化, 你就要知道重哪里优化下手
第一 直接执行语句取出40万 看花多久, 然后在看绑定控件花多久, 在看展示出来花多久, 然后在去优化。 比如查询40万语句就花10秒, 那很想然是库的主键或者 语句问题。 如果取40万就花了1秒, 绑定代码花了9秒, 那就说明 绑定需要优化
自己测试一下 是全部显示还是滚动加载..如果我说是一次性加载 你信吗?
我没有,但是我想还是获取数据不一样。因为从io的角度来看就限制了。
几十万everything显示的文件名称吗?关键还是我们的显示器怎么一下显示几十万出来,你看到的还是只有一屏啊。现在楼主想的是一次性搞几十万数据到内存里面。
自己测试一下 是全部显示还是滚动加载..如果我说是一次性加载 你信吗?
我没有,但是我想还是获取数据不一样。因为从io的角度来看就限制了。
几十万everything显示的文件名称吗?关键还是我们的显示器怎么一下显示几十万出来,你看到的还是只有一屏啊。现在楼主想的是一次性搞几十万数据到内存里面。
你这个话说的不对啊,首先要检索几十万的数据才能把搜索结果给显示出来,关键是检索几十万,而且速度很快
就拿QQ来比例:可以按开头数字来进行检索,比如我的qq是8开头,在检测帐号的时候,先检测8在哪个数据库进行检查,不需要查找全部数据库
用nosql吧
1.数据库里有多少条我们不管,哪怕你有1个亿的数据,怎么快速根据主键过滤,这是DBA操心的事情
2.你到底是个什么数据库,ES??ES自己根据主键过滤本身就很快
3.取出数据干啥?用来做计算么?那么听过分布式并行计算么。所以这个不存在什么快速取出大量数据-----这是伪命题。根据主键,索引查询对现在的数据库来说百万数据根本就是一个小case