SqlServer 聚集索引重建后变换列位置统计信息列名不变
发布时间:2020-12-12 12:44:59 所属栏目:MsSql教程 来源:网络整理
导读:原本是使用聚集索引主键发现的,确认不是主键问题,是聚集索引问题。 version:Microsoft SQL Server 2008 R2 (SP1) --创建测试表--drop table [TestTable]create table [dbo].[TestTable]([id] [int] not null,[name] [varchar](20) not null)go--插入数据i
原本是使用聚集索引主键发现的,确认不是主键问题,是聚集索引问题。 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问题。 除了这个问题,还有下图中这功能 ?“更新这些列的统计信息” 也是无效的!~ (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |