我的任务是优化一个有点小的Microsoft SQL Server 2008数据库,我们都觉得这个数据库的大小不足,而且其结构多年来一直被滥用。现在我不是专门的DBA,但是我确实有足够的SQL知识来解决我迄今为止遇到的大多数问题,所以我在这里寻找建议可能会填补我的知识空白。
1)所以我的第一步是看一下索引及其碎片。一个问题是,我应该重建/重组现有索引还是应该删除并重新创建它们?
我的下一步是确定当前密钥是否已编制索引,如果没有,则为它们创建索引。
2)我注意到许多表包含具有外键值的列,但很少有包含这些值的外键约束。 现在我知道外键约束的目的是维护表之间的关系,但是每个包含外键值的列是否都有外键约束?我觉得连接中使用的值应该受到限制,所以那些我无论何时我发现它们都会丢失,我们将毫无疑问地添加。 我读过添加外键约束并不一定能提高性能,因为它会在写操作期间产生额外的检查,但索引这些添加的外键可能会。您对此有何看法?
我也在研究添加一个可以不时自动进行索引维护的维护计划,并找到了一些很好的材料来帮助我实现这一目标。
谢谢你们!