日期:2014-05-20  浏览次数:20777 次

【SQL】【.net】【设计】复合查询 该怎么做?
情况是这样的:
3个表分别记录: A日志(10个字段) B日志(10个字段) C日志(10个字段)
3个类分别代表3个表: Ao Bo Co
3个表有个共同的ID表示关联

三个表的数据量都比较大

我现在要把这A.B.C 3个日志里面的内容 都输出到页面上。怎么要做可以使性能最优化。

我想的:

1.建立一个缓存表HistoryTable, 存储 A.B.C三个日志内容 ,然后吧HistoryTable里面的信息输出到页面上。
( 在数据库汇总信息)

2.建立HistoryObject ,直接查询表得到Ao.Bo.Co,然后将Ao.BO.Co组合到HistoryObject对象里,然后输出
(在业务层汇总信息)

如果我选用第一方法:必然要考虑,这个缓存表HistoryTable尽量只做查询(添加索引),可问题是:我每次给缓冲表里添加数据库还是要打乱索引(缓冲表该怎么实现?)


请各位帮帮我,如果表述不清楚,请指名,谢谢。

------解决方案--------------------
搞不懂什么叫做“缓冲表”。

要想缓存,当然就是最接近结果的内容才缓存啦。比如说页面,或者为了生成页面所查询出来的最后那一点数据。

哪有把什么数据库表缓存到道理?那纯粹是满脑子只有一点数据库表、不考虑业务设计大局。


------解决方案--------------------
探讨
搞不懂什么叫做“缓冲表”。

要想缓存,当然就是最接近结果的内容才缓存啦。比如说页面,或者为了生成页面所查询出来的最后那一点数据。

哪有把什么数据库表缓存到道理?那纯粹是满脑子只有一点数据库表、不考虑业务设计大局。

------解决方案--------------------
手动分页你用存储过程控制分页
1.你只有这三张表,而且 字段加起来也就那么几个,根本不大
2.存储过程控制分页,里面用联合查询选一张表做为主表即可
没必要为这个做缓存机制,过于复杂

------解决方案--------------------
楼上说的是,其实用row number 每次查询只显示当前页的数据就可以了。
------解决方案--------------------
楼主有意思 去百度看看asp.net页面缓存 就好了
------解决方案--------------------
如果数据变化不大,或者对实时变化的要求不高可以通过后台作业,把统计后的数据放在统计表中供查询使用。
如果统计表的数据量也大, 可以考虑将统计表按需求分段,比如1月1个表,2月1个表。。。。
在UI限制查询跨月数据, 至少不允许经常查询, 以减少查询压力, 也可以让每次数据更新尽可能的少一些。