2009-11-16 55 views
0

我有与搜索与像年龄,身高特定参数的用户站内搜索引擎网站....有成千上万的用户,所以我已经决定使用高级CTE为了每次检索10条记录以减少MSSQL服务器上的负载。搜索引擎逻辑分页功能,具有大型结果工作集

在这种CTE我得到的页面(即,每页10笔),同时通过用户lastVisit责令其结果。

问题是,我不能使用默认的asp.net建造它导航控件,所以我做了我的工作正常,但我需要得到整个结果集每次搜索的页面数量因此产生我第一次得到结果集,然后是最大记录数,所以我可以将它除以10以获取最新的页码以用于我的寻呼机控制器。

所以每次页面加载两个调用数据库被制成,而我想,以避免不必要的记录额时用户只需切换使用相同的搜索参数的页面。

你怎么会建议这样做呢?

回答

1

缓存总数的结果,例如通过分配一些(用户相关的)令牌并在用户进行分页时将其传回给服务器?你也可以这样缓存结果集。

+0

什么是添加,更新和删除“最大行”缓存触发器? 所有结果集都是50000条记录,并且增长速度很快,因此缓存所有内容不是一种选择。 – eugeneK 2009-11-16 14:21:17

+0

您可能有不同的策略,具体取决于它的增长速度以及新结果的相关可能性有多大。一种选择是在用户闲置一段时间后缓存过期时使用超时。另一种选择是计算新提取结果集(第一页)的校验和,如果它与前一个不同,则说明某些内容已发生变化,并且想要使缓存过期 – Dmitry 2009-11-16 14:32:23

+0

通过计算新提取结果的校验和是什么意思? – eugeneK 2009-11-16 14:41:12