0

我目前有一个搜索,可以让我过滤产品,以获得多种组合。

例如,我可能从所有产品开始,然后按类别或热门商店进行选择 - 每次选择过滤器时它都会简单地处理数据,显示每种过滤器的总数以及仍然可用的可能选择。用户可以多次执行此操作以进入他们的最终列表。

我是第一次与 EF 合作,搜索将有大约 10k 产品开始。

与 Linq2Sql 或 SP 相比,使用 EF 的主要区别在于它不仅获取数据,而且同时实现它们,虽然抓取页面数据需要 60 毫秒,但 10k 产品需要 4 秒。虽然这听起来不是很多,但每次用户刷新搜索时我都不能这样做。

我可以缓存数据,但这确实在上限阈值或服务器场方面限制了应用程序,尽管它现在符合要求。

然而,我想知道除了创建一个定制的 SP 之外是否有更好的方法来实现这一点。我不想使用 javascript,因为它是网站运行的基础。

有人有想法么?

4

3 回答 3

0

您不应该加载所有 10k 产品。如果您需要提取类别等,请单独执行,并且只提取您所在当前页面所需的数据量。这意味着所有工作都将在 SQL 服务器上完成,应用程序只能处理它需要的数据量。

于 2012-08-24T11:14:25.503 回答
0

使用一些支持分页的控件。

然后在您的选择查询中相应地使用.Skip()and 。.Take()

于 2012-08-24T11:16:58.207 回答
0

重构代码,以便不需要导航属性。这将查询的表数从 3 个减少到 1 个,并给出可接受的结果。

于 2012-09-19T17:37:45.107 回答