首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何确定是否使用压缩创建了SQL键列?

如何确定是否使用压缩创建了SQL键列?
EN

Stack Overflow用户
提问于 2020-09-07 10:05:00
回答 1查看 195关注 0票数 1

考虑以下DDL:

代码语言:javascript
复制
ALTER TABLE dbo.MyTable
ADD CONSTRAINT [PK_MyKey] PRIMARY KEY CLUSTERED ([Id] ASC)
WITH (STATISTICS_NORECOMPUTE=OFF, IGNORE_DUP_KEY=OFF, DATA_COMPRESSION=PAGE)
GO

这是一个压缩的主键。塔达!

困扰我的是,我在SSMS中没有看到任何压缩的记录?

  • 我在对象资源管理器的上下文菜单中的表、列或键属性对话框中找不到它。
  • 如果我要求SSMS编写=>创建键的脚本,那么它不包括DATA_COMPRESSION设置。我得到:
代码语言:javascript
复制
/****** Object:  Index [PK_MyKey]    Script Date: 07/09/2020 11:01:16 ******/
ALTER TABLE [dbo].[MyTable] ADD  CONSTRAINT [PK_MyKey] PRIMARY KEY CLUSTERED 
(
    [Id] ASC
)WITH (STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ONLINE = OFF) ON [PRIMARY]
GO

所以..。是否有可能知道现有的键(我没有创建,谁的创建没有版本控制:叹息:)是否被压缩了?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-09-07 10:18:59

根据文档,这可以在sys.indexessys.partitions对象中找到:

元数据 以下系统视图包含有关聚集索引的数据压缩的信息:

  • sys.indexes (Transact-SQL) -类型type_desc列包括集群COLUMNSTORE和非CLUSTERED COLUMNSTORE。
  • data_compressiondata_compression_desc列包括COLUMNSTORE和COLUMNSTORE_ARCHIVE。

过程储蓄(Transact-SQL)也可以应用于列存储索引。

具体而言,对于上面的内容,您希望查看列data_compression和/或data_compression_desc

代码语言:javascript
复制
CREATE TABLE dbo.MyTable_Comp (ID int NOT NULL);
ALTER TABLE dbo.MyTable_Comp
ADD CONSTRAINT [PK_MyKey_C] PRIMARY KEY CLUSTERED ([Id] ASC)
WITH (STATISTICS_NORECOMPUTE=OFF, IGNORE_DUP_KEY=OFF, DATA_COMPRESSION=PAGE)
GO

CREATE TABLE dbo.MyTable_NoComp (ID int NOT NULL);
ALTER TABLE dbo.MyTable_NoComp
ADD CONSTRAINT [PK_MyKey_NC] PRIMARY KEY CLUSTERED ([Id] ASC)
WITH (STATISTICS_NORECOMPUTE=OFF, IGNORE_DUP_KEY=OFF);

GO

SELECT i.[name], p.[data_compression], p.data_compression_desc
FROM sys.indexes i
     JOIN sys.partitions p ON i.object_id = p.object_id
WHERE i.[name] IN ('PK_MyKey_C','PK_MyKey_NC');

GO
DROP TABLE dbo.MyTable_Comp;
DROP TABLE dbo.MyTable_NoComp

对于上面的2个表,这将返回以下内容:

代码语言:javascript
复制
name        | data_compression | data_compression_desc
------------|------------------|----------------------
PK_MyKey_C  | 2                | PAGE
PK_MyKey_NC | 0                | NONE
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63775432

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档