使用分表查询好还是直接在存储过程中连表查询好?
现在是这样比如,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 表名;
------解决方案--------------------在存储过程中连表查询好