我有一个 1 TB、600m 行的表,它错误地选择了索引列,特别是主键列上的聚集索引,它从未在选择查询中使用。
我想从这一行中删除聚集索引并在许多其他行上创建它。
表目前是这样的:
colA (PK, nvarchar(3)) [聚集索引 pt b]
colB (PK, bigint) [聚集索引 pt a]
colC (DateTime) [非聚集索引]
colD (Money) [非聚集索引]
colE(位)[无索引]
colF(位)[无索引]
colG (int) [无索引]
更多非索引列
我想把它改成这样:
colA (PK, nvarchar(3)) [聚集索引 pt a]
colB (PK, bigint) [非聚集索引]
colC (DateTime) [非聚集索引]
colD (Money) [聚集索引 pt d]
colE (bit) [聚集索引 pt b]
colF (bit) [聚集索引 pt c]
colG (int) [聚集索引 pt e]
更多非索引列
两个问题:1)您估计这种更改需要多长时间(消息末尾的服务器规范)。不幸的是,它是一个实时数据库,如果不知道它会停机多长时间,我就无法停机。
2) 将这么多列添加到聚集索引中是不是一个糟糕的主意?几乎从不执行更新。有许多插入和许多选择总是使用所有建议的索引行作为选择参数。
服务器规格:RAID 5 中的 5 个 15kRPM 驱动器,MS-SQL Sever 2005 和一些保持它们运行的位。