Sql server SQL Server中的缓存结果 我有一个带有20-30个可选参数的存储过程 这些参数对应于内联TVF,当参数传递到存储过程时调用这些参数 这些TVF调用了一个公共dbo.Match函数,该函数在表a中查找字符串匹配,并进行大量计算,计算插入内联TVF返回的表的字段中的匹配百分比 最后的存储过程将传递给它的所有参数及其匹配结果百分比插入一个名为dbo.results

Sql server SQL Server中的缓存结果 我有一个带有20-30个可选参数的存储过程 这些参数对应于内联TVF,当参数传递到存储过程时调用这些参数 这些TVF调用了一个公共dbo.Match函数,该函数在表a中查找字符串匹配,并进行大量计算,计算插入内联TVF返回的表的字段中的匹配百分比 最后的存储过程将传递给它的所有参数及其匹配结果百分比插入一个名为dbo.results,sql-server,caching,stored-procedures,Sql Server,Caching,Stored Procedures,注意:在结果表中,我不是存储作为参数传递的每个值的匹配百分比,而是存储在运行中传递的所有参数的平均值。但最后,这些参数中的每个都是字符串,需要单独匹配,这是在dbo.match表中完成的。我原以为我会直接存储dbo.Match表中每个参数值的PercentMatch结果,并将其存储在一个表中,我会将该表视为缓存,但我不能将其作为dbo.Match函数来执行,因此此处不允许使用Insert语句。我该怎么做呢 然而,在应用程序的生命周期内,这些参数的相同值可能会传递到存储过程中,我不希望每次都在数据

注意:在结果表中,我不是存储作为参数传递的每个值的匹配百分比,而是存储在运行中传递的所有参数的平均值。但最后,这些参数中的每个都是字符串,需要单独匹配,这是在
dbo.match
表中完成的。我原以为我会直接存储dbo.Match表中每个参数值的PercentMatch结果,并将其存储在一个表中,我会将该表视为缓存,但我不能将其作为dbo.Match函数来执行,因此此处不允许使用Insert语句。我该怎么做呢

然而,在应用程序的生命周期内,这些参数的相同值可能会传递到存储过程中,我不希望每次都在数据库中查找它们,并重复所有计算。因此,我正在寻找一些可以缓存结果的东西。我只需要在数据没有更改的情况下从缓存中检索结果(这可以通过时间戳来完成,因此不需要检查)


我需要如何通过缓存已查找的字符串来获得良好的性能?

您不能只保存每个搜索词的dbo.Results表吗?如果有更改,请删除与可能受影响的任何搜索相关的所有记录。因此,您可以首先查找缓存的结果,如果没有找到,则执行常规搜索。将内容存储在带有时间戳的表中。以某种方式检查这个时间戳。如果结果尚未过期,请返回它们。如前所述,你的问题太宽泛了。你试过什么吗?另外,您是否考虑过在客户端而不是服务器端进行缓存,这更有意义?毕竟保存了一个可能的大数据往返。@JamesZ:请检查编辑。我不能那样做。结果表中的一行具有在运行中传递的所有参数的平均匹配,而不是运行中的每个参数的平均匹配。为了节省时间和提高效率,我避免查找那些已经查看过的参数值。@Jeroenmoster:我们有一个约束,我们不能在客户端执行任何操作。请检查我在问题中添加的注释。这正是我被卡住的地方。你能把匹配函数改成一个过程吗?这是一个非常广泛的话题,没有任何细节信息,很难给出任何建议。