Tom*_*lek 9 performance sql-server-2005
我有一个数据库查询,它可能会导致一个很大的结果集。显示数据的客户端通过网络接收数据,因此我们的想法是通过仅从数据库中检索前 50 个结果并将它们发送到客户端来最小化传输的数据量。然后我将提供一种可能性,跳转到第二页以检索接下来的 50 个结果等(类似于 google 提供的内容)
问题是实现分页的有效方法是什么。我想确保 mssql 尽可能多地使用缓存,并且每次更改分页时都不会再次执行相同的缓存。
同时查询数据库的客户端较多。使用的sql引擎:MS SQL 2005
我的想法是:
但这真的是最有效的方法吗?或者您认为检索整个结果集并在将数据发送到客户端的代码中实现分页会更好吗?
谢谢你的提示!
问候, 托马斯
每次都会执行查询。SQL Server 不缓存结果。
直到 SQL Server 2011 才会实现正确的分页,但在那之前,您的选项(如您所确定的)是:
准备好的 SQL 语句也将每次执行。
如果你有一个胖客户端,那么缓存是客户端本地的。例如,除非您有数百万个 blob,否则这基本上没问题。
在我们的 Web 客户端中,我们呈现所有结果,但只显示前 100 个结果,并且有一个“全部显示”按钮,而不是扩展一个带有 101+ 行的隐藏 DIV。我们不在 Web 服务器中缓存,也不提供分页。