专栏首页python3八、IO优化(3)稀疏列

八、IO优化(3)稀疏列

一、Nullable

  在设计表时,有时会允许某列可以使用Null值(默认)。

CREATE TABLE [dbo].[EmpTable2]( [EmpID] [varchar](10) NOT NULL, [DepID] [nvarchar](10) NULL, [Title] [nvarchar](10) NULL )

二、稀疏列

  稀疏列是对 Null 值采用优化的存储方式的普通列。

  稀疏列减少了 Null 值的空间需求,但代价是检索非 Null 值的开销增加。 当至少能够节省 20% 到 40% 的空间时,才应考虑使用稀疏列。

三、稀疏列的使用场景

1. 列集

  使用稀疏列的表可以指定一个列集以返回表中的所有稀疏列。列集是一种非类型化的 XML 表示形式,它将表的所有稀疏列组合成为一种结构化的输出。列集与计算列的相似之处在于,列集并不是物理地存储在表中。列集与计算列的不同之处在于,列集可直接更新。

  稀疏列和列集是通过使用 CREATE TABLE 或 ALTER TABLE 语句定义的。INSERT、UPDATE 和 DELETE 语句可以通过名称来引用稀疏列。详见 http://technet.microsoft.com/zh-cn/library/cc280604(v=sql.105).aspx

2. 筛选索引

  对于仅包含少量非 NULL 值的稀疏列,因为稀疏列有许多 Null 值行,所以尤其适用于筛选索引。稀疏列的筛选索引可以仅仅对已填充值的行编制索引。这会创建一个更小、更有效的索引。

本文结语:

  使用稀疏列,可以减小存储空间,或者创建更有效的筛选索引。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • python中list的使用

    举例:listClassName = ['Jack','Tom','Mark']                   

    py3study
  • Python 3 学习笔记:序列

    序列是一块用于放置多个值得连续存储空间,并且按特定顺序排列,每个值(称为元素)都分配一个整数(由左至右则从 0 开始;由右至左则从 -1 开始),称为索引(in...

    py3study
  • 函数对象

    py3study
  • 【纽约时报】人工智能之父马文·明斯基(Marvin Minsky)去世,享年 88 岁

    Marvin Minsky,一位将科学家对于知识的渴求与哲学家对于真相的追寻相融合的人工智能先驱——他的工作也为许多发明带来了灵感,包括个人电脑和互联网的诞生—...

    新智元
  • Qt线程使用的两种方法

    一个QThread实例管理程序中的一个线程。QThread的执行开始于run()。默认情况下,run()通过调用exec()启动事件循环,并在线程内运行Qt事件...

    Qt君
  • Redis源码学习之列表对象

    列表对象的底层实现可以是【压缩列表】或者【双端链表】,Redis会通过用户对于压缩列表单个节点值长度(list_max_ziplist_value)和键值对个数...

    里奥搬砖
  • Redis源码分析(二)——Redis数据结构-链表

    数据结构——节点 typedef struct listNode{ struct listNode *prev; struct listNode *n...

    大闲人柴毛毛
  • Stanford NLP 解读 ACL 2018 论文——用于调试 NLP 模型的语义等价对立规则

    AI 科技评论按:近日,斯坦福自然语言处理小组发布了一篇博文,重点讨论了由 Ribeiro、Marco Tulio、Sameer Singh 和 Carlos ...

    AI科技评论
  • 如何设计一个不讨人厌的AI?“恐怖谷”了解一下

    量子位
  • Apache Flink 任意 Jar 包上传致 RCE 漏洞复现

    Timeline Sec

扫码关注云+社区

领取腾讯云代金券