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