当前位置:编程学习 > C#/ASP.NET >>

数据库操作的效率问题

有一张世界各地的IP表,包括ip字段和地区字段,数据量44万;另有一张世界各地地区信息Area表,包括国家、省、市、县字段,数据量3800;现在的需求是:
1. 根据这两张表,将IP表的address匹配到Area表的Name,最终产生一张IP对应的规范地址表IPToArea;
2. 传入一个IP地址,根据IpToArea表中的记录,查询出规范的地址;
表信息如下:
 

Ip表


Area表

 
IpToArea表

我试过直接用T-Sql以及放到DataSet中两种方式去处理,大致的思路就是利用双重循环,但是运行过程非常缓慢,请教各位,有什么方法可以提高处理的效率?
--------------------编程问答-------------------- 是有点复杂 没有一个能对应的查询条件啊 请详细点啊 --------------------编程问答-------------------- IP表的Address和Area表的Name中的数据规律吗?
如果IP中存了

广东省广州市天河

Area表中有
广东省
广州市
天河区(或者天河或者天河区一二之类的)

那这样就不好匹配了,情况太多了。

--------------------编程问答-------------------- 先删啊...把需要的都删了就去掉几十万了,你地区才3800,显然只有天朝的... --------------------编程问答-------------------- 把需要的都删了
------------
把不需要的都删了 --------------------编程问答-------------------- 先弄清楚可行性吧
你怎么用address去匹配area的?

这个事情最好是先把那3800个area取出来放到内存里
然后逐条处理ip这样会快一些 --------------------编程问答-------------------- 数据库清空,速度刚刚的 --------------------编程问答-------------------- 明天告诉你吧,或者晚上家里上网的时候,不过嵌费了~~~~ --------------------编程问答-------------------- 按时下班~~ --------------------编程问答-------------------- 我试过直接用T-Sql以及放到DataSet中两种方式去处理,大致的思路就是利用双重循环,但是运行过程非常缓慢,请教各位,有什么方法可以提高处理的效率?
-------------
1、至于效率问题,宏观上来说是用空间来换时间。同时采用更好的算法。
2、你的双循环,大数据量时肯定不是最好的算法。可否想办法让它能适用类似二分法或其它更高效的算法来处理。
3、如果自已没有更好的算法,那就让数据库系统来处理吧。可以通过增加字段、索引、临时表、视图等。
4、IpToArea表可否改成视图,以便减少维护工作。
5、可增加表来提高效率。比如中国的和日本的区分。(亚洲、欧洲的区分也行)。
6、应用中可以先读到内存中/缓存、哈希表等方式来提高效率。
补充:.NET技术 ,  C#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,