我使用 SQL Server 2005 编写了一个分页搜索存储过程。它需要许多参数并且搜索条件比较复杂。
由于前端架构,我需要能够返回将返回的结果数量,而无需实际返回结果。然后前端将再次调用存储过程以获取实际结果。
一方面,我可以编写两个存储过程——一个处理计数,一个处理实际数据,但是我需要在至少两个不同的地方维护搜索逻辑。或者,我可以编写存储过程,以便它接受一个位参数,并在此基础上返回数据或仅返回一个计数。也许用数据填充一个临时表,如果它只是计数,则从中进行计数,否则从中进行选择。这里的问题是可以优化计数过程,因此看起来有很多额外的开销(必须获得不需要的列等)。此外,在存储过程中使用这种逻辑可能会导致错误的查询计划,因为它在两种用途之间来回切换。
系统中的数据量并不太高(即使是更大的表也只有几百万行)。但是可能有很多并发用户。
人们对这些方法有何看法?以前有没有人以我没有想到的方式解决了这个问题?
他们不能从单个呼叫中同时获取结果和计数。
谢谢!