我的生产数据库存在碎片问题。我的一个主要数据表大小约为6GB(3GB索引)(约9M记录),并且有94%(!)索引碎片。
我知道重组索引会解决这个问题但我的数据库是在SQL Server 2008R2 Express上,它有10GB的数据库限制,我的数据库已经是8GB了。
我已经阅读了一些关于这个问题的博文,但没有回答我的情况。
我的问题1 是: 重新组织该表上的索引后,我可以期望增加多少大小(%或以GB为单位)?
问题2 : 将丢弃指数 - >构建相同索引占用更少的空间?时间对我来说不是一个因素。
额外的问题: 有关数据库碎片的任何其他建议吗?我知道只是为了避免像火一样萎缩;)
答案 0 :(得分:0)
在键列上使用INDEX将通过消除对表扫描的需要来改进连接和过滤器。维护良好的指数可以显着提高绩效。
GUID对索引列的选择不好是正确的,但这绝不意味着你不应该创建这些索引。理想情况下,建议使用INT或BIGINT的数据类型。
对于我来说,添加NEWID()作为默认值已经在抵消索引碎片方面有所改进,但如果所有替代方法都失败了,则可能需要比其他索引更频繁地执行索引维护(重建,重组)操作。重新组织需要一些工作空间,但在您的方案中,由于时间不是问题,我会禁用索引,缩小数据库并创建索引。