以及如何使它们在测试和生产环境之间保持同步?
当谈到数据库表的索引时,我的理念是它们是编写任何查询数据库的代码的一个组成部分。如果不分析对索引的影响,就无法引入新查询或更改查询。
所以我尽我最大的努力让我的索引在我所有的环境之间保持同步,但老实说,我在自动化这方面做得不是很好。这是一种随意的手动过程。
我会定期查看索引统计数据并删除不必要的索引。我通常通过创建一个删除脚本来执行此操作,然后将其复制回其他环境。
但是这里和那里的索引是在正常过程之外创建和删除的,很难看出差异在哪里。
我发现真正有用的一件事是使用简单的数字索引名称,例如
idx_t_01
idx_t_02
其中 t 是表格的缩写。当我试图对所有涉及的列变得聪明时,我发现索引维护是不可能的,比如,
idx_c1_c2_c5_c9_c3_c11_5
区分这样的索引太难了。
有人有将索引维护集成到源代码控制和开发生命周期中的真正好方法吗?