Mos*_*azi 5 sql sql-server sql-server-2008
等待页 (1:1535865)、数据库 ID 6 的缓冲区锁存器类型 2 时发生超时。
这是我在尝试创建索引时收到五次的错误消息
CREATE NONCLUSTERED INDEX YearIndx ON dbo.Papers
(
PublicationYear
)
Run Code Online (Sandbox Code Playgroud)
论文表约20,000,000条记录,175 GB
我从来没有遇到过这种情况,而且在伟大的谷歌上的搜索并没有立即击中我,所以这是我会尝试的:
请验证您是否从 SSMS 查询窗口运行此查询。如果是这样,则转到“查询”、“查询选项”、“执行”。执行超时的值是多少?
CREATE NONCLUSTERED INDEX YearIndx ON dbo.Papers
(
PublicationYear
)
WITH
(
SORT_IN_TEMPDB = ON
--, ONLINE=ON --Enterprise only
, ALLOW_ROW_LOCKS = OFF --default is on
, ALLOW_PAGE_LOCKS = OFF --default is on
, MAXDOP = 1 --all that you can allow
)
Run Code Online (Sandbox Code Playgroud)
哦,请确保您阅读了创建索引语句,以确保我选择的选项适用于您的情况。例如,如果 tempdb 与 db_name(6) 位于同一组磁盘上,那么情况可能只会变得更糟
另一种选择是创建一个相同的空表,其中包含您想要的所有索引。然后您可以通过选择 dbo.Papers 来轻轻地填充该表。完成后,然后通过一批事务包装,将 dbo.Papers 重命名为 dbo.Papers_old,将 dbo.Papers_new 重命名为 dbo.Papers。
最后,我在考虑你的索引。您是否绝对确定仅 PublicationYear 上的索引就能解决出现的任何问题?让我惊讶的是,大多数人可能不会搜索一年内写的所有内容。更有可能的是,约翰今年写的所有论文,或者上个月写的所有论文。
| 归档时间: |
|
| 查看次数: |
14669 次 |
| 最近记录: |