背景:
我在 Windows 2008 上使用 SQL Server 2008 和 ASP.NET 4
我有一张表,其中包含大约 1000 万行产品,我在线提供给用户浏览而不是搜索。1000 万种产品中的每一种都有额外的属性——比如类别——我保存在查找表中——有三个或四个查找表。
问题
当有人浏览并开始使用过滤器(发货地点、价格、质量、品牌)时,我需要加入表格,应用所有过滤器并返回结果。它非常慢,我想让它更快。有时用户会应用一个非常广泛的过滤器,产生 800,000 个结果,虽然我只返回前 10 个用于浏览,但我仍然需要运行完整的 800,000 个查询。
我已经尝试过的
我已将各个表中的所有信息合并到一个物理表中,然后为该表创建了一个覆盖索引。
查询要快得多,但是我必须在幕后的工作台上进行大量维护工作,以确保如果有东西缺货,我会在合理的时间范围内(5 分钟左右)将其取出.
我不使用物化/索引视图 b/c 我在 SQL Server 似乎不喜欢的结果中有聚合。
问题
除了我已经完成的索引和表优化之外,如何加快浏览结果的速度?我没有进行任何全文搜索——我正在使用确切的参数进行过滤。
我想到的可能的解决方案
大型缓存解决方案——AppFabric 或 MemCached。我对这些几乎一无所知,也不知道它们是否合适。
小型缓存解决方案——也许利用 ASP.NET 缓存——但每个人都会应用不同的过滤器,所以我不确定这会给我带来多少。
SSD——作为一种更大规模的解决方案,我曾考虑过购买 SSD,但这将在路上
CDN——我不认为 CDN 会帮助 b/c 这里的瓶颈是我的数据库的搜索能力,而不是到请求者的带宽/距离。