1、当面临千万条数据量的比较时,从技术的角度来说应该用泛型键值(c#键值由于用了散列算法速度很快)。例如前几天我需要查的是 航空公司、出发、到达、返点可以将 航空公司-出发-到达做一个键,返点作为值。

            if (dtsourceBT.Rows.Count > 0)
{
dBaitour = new Dictionary<string, string>();
foreach (DataRow dr in dtsourceBT.Rows)
{
string outstring = "";
string tmpKey = ""; string tmpValue = "";
if (!dBaitour.TryGetValue(tmpKey, out outstring))
{
dBaitour.Add(tmpKey, tmpValue);
}
else
{ dBaitour[tmpKey] = "";
}
}
}

2、从业务角度来优化,这点很重要。因为所以的程序都不是孤立的。根据业务要求如果这样做

第一、查出所以的数据(将近5万条数据)

string sqlBT = "select ZRateId, DeparturePort,ArrivalPort,airwaycompanycode,CabinCode,RateValue,FlightNumber,NoFlightNumber from b2b_zrate_new where state=1  AND IssuedToDate>=convert(varchar(10),getdate(),120) and outPattern!=3 ORDER BY RateValue desc";

 DataTable dtsourceBT = DbHelper.ExeAll116(sqlBT);

第二、通过航空公司筛调一部分数据(剩下3千条数据)

DataRow[] drBTS = dtsourceBT.Select(" airwaycompanycode='" + dr["AirCompany"] + "'");

第三、再去比较,这样数据量变小了。速度就快多了

foreach (DataRow drBT in drBTS)
{
if (drBT["DeparturePort"].ToString().Contains(drNew["DeparturePort"].ToString()))
{
if (drBT["ArrivalPort"].ToString().Contains(drNew["ArrivalPort"].ToString()))
{
if (drBT["CabinCode"].ToString().Contains(drNew["CabinCode"].ToString()))
{
drNew["BTPolicyId"] = drBT["ZRateId"];
drNew["BTValue"] = (Convert.ToDecimal(drBT["RateValue"])*100).ToString();
break;
}
}
}
}

c# 大数据量比较时-方案的更多相关文章

  1. PGIS大数据量点位显示方案

    PGIS大数据量点位显示方案 问题描述 PGIS在地图上显示点位信息时,随点位数量的增加浏览器响应速度会逐渐变慢,当同时显示上千个点时浏览器会变得非常缓慢,以下是进行的测试: 测试环境: 服务器: C ...

  2. 大数据量传输时配置WCF的注意事项

    原文:大数据量传输时配置WCF的注意事项 WCF传输数据量的能力受到许多因素的制约,如果程序中出现因需要传输的数据量较大而导致调用WCF服务失败的问题,应注意以下配置: 1.MaxReceivedMe ...

  3. 【转载】大数据量传输时配置WCF的注意事项

    WCF传输数据量的能力受到许多因素的制约,如果程序中出现因需要传输的数据量较大而导致调用WCF服务失败的问题,应注意以下配置: 1.MaxReceivedMessageSize:获取或设置配置了此绑定 ...

  4. hadoop job解决大数据量关联时数据倾斜的一种办法

    转自:http://www.cnblogs.com/xuxm2007/archive/2011/09/01/2161929.html http://www.geminikwok.com/2011/04 ...

  5. java处理大数据量任务时的可用思路--未验证版,具体实现方法有待实践

    1.Bloom filter适用范围:可以用来实现数据字典,进行数据的判重,或者集合求交集基本原理及要点:对于原理来说很简单,位数组+k个独立hash函数.将hash函数对应的值的位数组置1,查找时如 ...

  6. 使用netty4.x客户端接收较大数据量报文时发生的读取不完整bug修复记录

    1.先说问题 背景:服务是运行在Linux上的安全网关提供的,TCP协议发送 通过二进制编码的xml字符串 报文,报文头的第一个字段是int类型的表示字节序标记,第二个字段是int类型的表示整个报文长 ...

  7. 关于webservice大数据量传输时的压缩和解压缩

    当访问WebSerivice时,如果数据量很大,传输数据时就会很慢.为了提高速度,我们就会想到对数据进行压缩.首先我们来分析一下. 当在webserice中传输数据时,一般都采用Dataset进行数据 ...

  8. VC++大数据量绘图时无闪烁刷屏技术实现(我的理解是,在内存上作画,然后手动显示,而不再直接需要经过WM_PAINT来处理了)

    http://hantayi.blog.51cto.com/1100843/383578 引言 当我们需要在用户区显示一些图形时,先把图形在客户区画上,虽然已经画好但此时我们还无法看到,还要通过 程序 ...

  9. 使用内存映射文件MMF实现大数据量导出时的内存优化

    前言 导出功能几乎是所有应用系统必不可少功能,今天我们来谈一谈,如何使用内存映射文件MMF进行内存优化,本文重点介绍使用方法,相关原理可以参考文末的连接 实现 我们以单次导出一个excel举例(csv ...

随机推荐

  1. DAO 基础学习笔记

    一.DAO 1.概念: (1)Date Access Object(数据存取对象) (2)位于业务逻辑和持久化数据之间 (3)实现对持久化数据的访问 (4)类---> DAO --->数据 ...

  2. 使用BufferedReader的时候出现的问题

    今天在使用BufferedReader的时候,出现了一个奇怪的问题 有时候换行的时候,行首会少一个字符 开始的代码是这样写的 while( br.read()!=-1 ){ String str = ...

  3. 使用 JUnit 进行单元测试 - 教程

    tanyuanji@126.com 版本历史 JUnit 该教程主要讲解 JUnit 4.x 版本的使用,以及如何在Eclipse IDE 中如何使用JUnit   目录 tanyuanji@126. ...

  4. Android 代码编辑器中实现代码语法高亮

    想写一款Android手机上的代码编辑器,实现类似c4droid中代码语法高亮 通过Android中的控件WebView中嵌入html网页,html引入CodeMirror这个第三方库就可以了,其实就 ...

  5. js django 数据互动

    后台传输到客户端的数据怎么跟js进行互动 eval("("+{{data|safe}}+")") 获取到的数据可以直接使用 eval 有时候会存在编码问题所以推 ...

  6. C#.NET利用ContextBoundObject和Attribute实现AOP技术--AOP事务实现例子

    我前两天看见同事用写了用AOP技术实现缓存的方案,于是好奇看了一下这是怎么实现的.原来是用了.NET中的一个类ContextBoundObject和Attribute相关技术.其实个类在.NET Fr ...

  7. linux下ifconfig, DNS以及route配置

    转载:http://blog.csdn.net/wangjingfei/article/details/5283632/ 熟悉使用ifconfig 会非常方便. ifconfig eth0 新ip 然 ...

  8. 【转】如何测试CTS4.0 -- 不错

    原文网址:http://blog.csdn.net/subsist/article/details/7209341/ CTS4.0测试步骤 V1.2 (更新到CTS4.0 R3)     第一:平台准 ...

  9. RFC 2327--SDP

    Network Working Group M. Handley Request for Comments: 2327 V. Jacobson Category: Standards Track IS ...

  10. Java反编译插件jad

    原文地址:http://www.cnblogs.com/JimLy-BUG/p/5405868.html 1.首先下载jar文件:net.sf.jadclipse_3.3.0.jar  下载   2. ...