日期:2014-05-19  浏览次数:20842 次

使用分表查询好还是直接在存储过程中连表查询好?
现在是这样比如,a,b两个表是有关系的(b表中保存a表的ID).我是先查b表,把所得a表ID的结果再对a表做查询好呢?还是直接在存储过程中把两个表连起来做查询好?
一个表一个表查询代码如下:
public   virtual   View_Domainss_DomainSellsDataSet   GetByD_Id(int   D_Id)   {
View_Domainss_DomainSellsDataSet   stDataSet   =   new   View_Domainss_DomainSellsDataSet();
stDataSet.EnforceConstraints   =   false;
SqlConnection   conn   =   new   SqlConnection(Config.connectionString);

try   {
conn.Open();
stDataSet.Domains.MergeTable(new   DomainsDAO().GetByD_Id(D_Id,   conn).Tables[0]);


//(c)Fill   DomainSell   from   Domains
foreach(DomainsRow   row   in   stDataSet.Domains.Rows)   {
stDataSet.DomainSell.MergeTable(new   DomainSellDAO().GetAllByDS_Domain(row.D_Id,   conn).Tables[0]);
}

}   catch   (Exception   ex)   {
throw(ex);
}   finally   {
conn.Close();
}

stDataSet.AcceptChanges();
return   stDataSet;
}

------解决方案--------------------
个人倾向存储过程中连接
------解决方案--------------------
如果经常使用查询的结果,显然使用存储过程的效率更好
------解决方案--------------------
视图
------解决方案--------------------
a,b表应该是一对多的关系吧,如果一次查出为一个记录集,那么a表会有庸余,如果一定需要查b表,可以使用多记录集,或者设计为关联实体类是。

class a{
//
List <b> list_b;
}

class b{
//
}
------解决方案--------------------
分区表,在存储过程中查询
------解决方案--------------------
链表 查询 效率 更高.
------解决方案--------------------
这个不好说,要看你的系统设计.根据范式计算.
------解决方案--------------------
链表查询比较好,注意几个问题:
1.建好主链和外链;
2.字段多的话采用select a.字段名... from a LEFT OUTER JOIN b on a.id=b.id,不要用select * from 表名;
------解决方案--------------------
在存储过程中连表查询好