Sql server 2005 如何将覆盖索引预加载到缓冲池(数据缓存)中?

Sql server 2005 如何将覆盖索引预加载到缓冲池(数据缓存)中?,sql-server-2005,Sql Server 2005,我们的应用程序有一个非常大、很宽的事务数据表。我们有一个“核心”覆盖索引,用于针对该表执行的90%SELECT查询。当这个索引保留在缓冲池(数据缓存)中时,我们的应用程序执行得非常非常好。如果其他数据页将索引页从数据缓存中推出,那么我们的应用程序速度会大大降低 所以我的挑战是:我有一些过夜的批处理过程来管理事务性数据。它们以不同于日间应用程序的方式在桌面上工作。我可以创建额外的覆盖索引,以帮助批处理过程更快地运行。但我们发现,当部署其他覆盖索引时,“核心”覆盖索引会从缓存中掉出来 我计划在隔夜批

我们的应用程序有一个非常大、很宽的事务数据表。我们有一个“核心”覆盖索引,用于针对该表执行的90%SELECT查询。当这个索引保留在缓冲池(数据缓存)中时,我们的应用程序执行得非常非常好。如果其他数据页将索引页从数据缓存中推出,那么我们的应用程序速度会大大降低

所以我的挑战是:我有一些过夜的批处理过程来管理事务性数据。它们以不同于日间应用程序的方式在桌面上工作。我可以创建额外的覆盖索引,以帮助批处理过程更快地运行。但我们发现,当部署其他覆盖索引时,“核心”覆盖索引会从缓存中掉出来

我计划在隔夜批处理过程的开始和结束时创建并删除额外的覆盖索引

如果在批处理过程结束时,我可以将“核心”覆盖的索引拉入缓冲池(数据缓存),那就更好了


我不想用“大头针桌”之类的东西。我只想在批处理结束时读取“核心”覆盖索引的所有页面,以便在一天开始时,“核心”覆盖索引已经在内存中。

DBCC PINTABLE是不可操作的。您可以运行它,但它不做任何事情。我相信您可以想出一些脚本,在夜间处理之后查询白天的数据,以便它接管缓冲池,但是您是否考虑过一个更便宜的选择:添加内存