参见英文答案 >
When should I rebuild indexes?6个
我们有一位sql专家建议每周重建我们的表索引.我们目前正在做这个星期六晚上,它会在重建过程中造成很多超时.如果可能的话,我想避免超时,那么每周索引重建是否是一个好主意?
我们有一位sql专家建议每周重建我们的表索引.我们目前正在做这个星期六晚上,它会在重建过程中造成很多超时.如果可能的话,我想避免超时,那么每周索引重建是否是一个好主意?
我们正在运行MS sql server 2014.
UPDATE
我们在重建期间遇到此错误“System.Data.sqlClient.sqlException:Timeout expired.在操作完成之前已经过了超时时间,或者服务器没有响应.”
谢谢!
解决方法
不要盲目地去重建所有索引.有一个
much intelligent way of doing it.(提示:Ola hallengren的sql Server索引和统计维护)
这是微软的官方指南(它是一个很好的起点 – 而不是盲目地重建所有索引):
此外,如果您使用的是sql server enterprise edition,则Rebuild是一个在线操作(REBUILD ONLINE = ON)
另外,阅读:Online Index Rebuild – Can Cause Increased Fragmentation – 允许以MAX DOP运行> 1和ALLOW_PAGE_LOCKS = OFF指令.
作为旁注:Paul Randal在他的MS日有一个nice checklist of VLDB Maintenance best practices