设为首页 加入收藏

TOP

Sql Server聚集索引重建后变换列位置统计信息列名不变
2015-07-24 11:04:37 来源: 作者: 【 】 浏览:1
Tags:Sql Server 聚集 索引 重建 变换 位置 统计 信息 列名 不变

原本是使用聚集索引主键发现的,确认不是主键问题,是聚集索引问题。

version:Microsoft SQL Server 2008 R2 (SP1)

?

--	创建测试表
--	drop table [TestTable]
create table [dbo].[TestTable](
	[id] [int] not null,
	[name] [varchar](20) not null
)
go

--	插入数据
insert into [TestTable]([id],[name])
select id%10,left(name,20) from sys.sysobjects
go

--	创建聚集索引([id] asc,[name] asc)
create clustered index [pk_testtable] on [dbo].[TestTable]([id],[name])
go

-- 查看统计信息
-- dbcc show_statistics('[dbo].[TestTable]','pk_testtable')

?

\

注意上图红框的顺序。现在重新创建聚集索引

?

--	删除聚集索引
drop index [pk_testtable] on [dbo].[TestTable]
go

--	创建聚集索引([name],[id])
create clustered index [pk_testtable] on [dbo].[TestTable]([name],[id])
go
\

?

删除索引时,统计信息会被删除。现在再看名称,索引已经改为([name],[id]),但统计信息显示的列 还是一样!~bug?

?

--	再看看统计信息
dbcc show_statistics('[dbo].[TestTable]','pk_testtable')  
\

?

统计信息是正常的,只是页面显示的列名顺序不一样。

?

--	查看索引使用情况,[name]是肯定使用索引了.
select * from [TestTable] where [id] = 1
select * from [TestTable] where [name] = 'A'
\

?

因为是索引,又不能删除统计信息,所以也改不了。

这虽然不是什么严重性问题,但是奇怪,这些问题是否可修复?还不确定是否是ssms问题。

除了这个问题,还有下图中这功能 “更新这些列的统计信息” 也是无效的!~

\

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇安装Sqlserver2005出现"性能.. 下一篇PowerDesigner连接SqlServer数据..

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容:

·Redis 分布式锁全解 (2025-12-25 17:19:51)
·SpringBoot 整合 Red (2025-12-25 17:19:48)
·MongoDB 索引 - 菜鸟 (2025-12-25 17:19:45)
·What Is Linux (2025-12-25 16:57:17)
·Linux小白必备:超全 (2025-12-25 16:57:14)