DataSet中多个表怎么合并??
t1 :a,b,c
t2 :a,d,f
要合并成:a,b,c,d,f
怎么合并????
不要说在数据库里join,两个表数据都很大,而且每个表取数据的逻辑比较复杂,如果取笛卡尔集起码30秒以上才能执行完。
------解决方案--------------------所引加视图才是王道啊~~~
你要是非在ds里面拼就只好
DataSet ds_new = new DataSet()
ds_new.Tables[0].Columns.Add(new DataColumn( "a ", Type.GetType( "System.String ")));
ds_new.Tables[0].Columns.Add(new DataColumn( "b ", Type.GetType( "System.String ")));
ds_new.Tables[0].Columns.Add(new DataColumn( "c ", Type.GetType( "System.String ")));
ds_new.Tables[0].Columns.Add(new DataColumn( "d ", Type.GetType( "System.String ")));
ds_new.Tables[0].Columns.Add(new DataColumn( "f ", Type.GetType( "System.String ")));
然后把t1,t2.的数据 用foreach 全导到 ds_new.Tables[0]里面了.
------解决方案--------------------DataSet ds_new = new DataSet()
ds_new.Tables[0].Columns.Add(new DataColumn( "a ", Type.GetType( "System.String ")));
ds_new.Tables[0].Columns.Add(new DataColumn( "b ", Type.GetType( "System.String ")));
ds_new.Tables[0].Columns.Add(new DataColumn( "c ", Type.GetType( "System.String ")));
ds_new.Tables[0].Columns.Add(new DataColumn( "d ", Type.GetType( "System.String ")));
ds_new.Tables[0].Columns.Add(new DataColumn( "f ", Type.GetType( "System.String ")));
==================================================================================
YISUKU_LEE(笨笨的胖蜜蜂) 的方法对
------解决方案--------------------不要说在数据库里join,两个表数据都很大,而且每个表取数据的逻辑比较复杂,如果取笛卡尔集起码30秒
=========
要是如此,我看,DataTable 间合并,300s 估计都完不成 ....
还得加上,单独从 db 读取这几个 table 的时间
为什么如此的不相信 Structured Query Language ??????
------解决方案--------------------实际情况是差不多有5、6个表,每个表差不多500万的数据,你们试试在数据库里都作笛卡尔集,不死掉才怪!!
============
原来你只知道集合操作有个叫 笛卡儿积(全连接),请问知道 SQL 还有左(右)外连接不?
知道 JION 了依然可以 WHEHE 不?
好吧,先不讨论 DataTable 怎么合并吧(其实就 DataSet/DataTable.Merge 方法)
那,你准备读取 N 张 200W+ 数据到 DataTable ,然马 Merge ?
不是,每个表只取差不多200条左右出来!
=========
原来,真的是喝高了 ....
------解决方案--------------------采取正确的策略,
建立索引(WHERE 字句中的条件字段)
连接/子查询
不管你是内、左/右外连接,【还是真的需要】全连接,
绝对比你用 DataTable/Set.Merge 效率高!!!