我们有表格Site
并且Content
在我们的数据库中。
每个站点由不同的客户运营,每个站点都有自己的内容。
在网站的前端,我们提供了一个搜索框,它在内容表上使用全文/自由文本搜索来返回结果,但每个网站只能从其自身返回结果,而不是从数据库中的其他网站返回结果。
SQL Server 查询优化器在这里表现不佳。如果它针对内容很少的站点优化查询,那么对于内容很多导致超时的站点,查询的执行会非常糟糕。
我们知道我们可以添加OPTION(RECOMPILE)
到查询的末尾来解决这个问题,但我的问题是......
为每个站点创建一个缓存表,以便可以定期缓存每个站点的内容并让搜索存储过程查找缓存表而不是使用参数会更好吗?
仅在添加/更改内容时才会更新/刷新缓存。
我的想法是,这将......
a) 减少被搜索表的大小,只包含正确站点的记录
b) 允许全文搜索为每个站点生成更准确的内容索引
c) 允许查询优化器独立缓存每个站点的优化查询
它是否正确?我这样做对吗?