聚集索引顺序-问答-阿里云开发者社区-阿里云

开发者社区> 问答> 正文

聚集索引顺序

2020-01-04 15:36:50 181 1

我有一个CRM系统,正在其中查看SQL Server 2017数据库的结构。

History在Date_Entered(datetime)和Time_Entered(varchar(8))上有一个聚集索引的表。大约有3000万行(并且还在不断增加)。

打开客户记录后,他们的最新历史记录将按相反的日期/时间顺序显示。

随着索引升序,新行将添加到表的末尾。如果我要按降序的日期/时间顺序重建它,则我认为显示记录会更快(尽管无论如何它都不会很慢),但是这意味着新记录将被插入到开头,因此导致恒定的页面拆分,不是这样吗?

取消 提交回答
全部回答(1)
  • 祖安文状元
    2020-01-04 15:36:59

    1个

    您最终不会出现恒定的页面拆分。您可能认为这是因为您对聚簇索引的思维方式有误,并认为它们按物理顺序存储,因此必须以某种方式在物理上插入新行。事实并非如此。

    但是-请勿这样做,因为最终会产生99.x%的逻辑碎片,而不会进行页面拆分。新的物理页面倾向于在文件中比以前的页面更晚地分配,而索引的逻辑顺序将需要从更早的位置开始分配它们(示例)。

    假设按顺序插入,Date_Entered, Time_Entered则将填充每个新页面,然后分配并填充一个新页面。无需在页面之间移动行的页面拆分-只需分配新页面即可。唯一的问题是,除非重建或重新组织索引,否则物理页面顺序可能会完全颠倒逻辑索引顺序。

    我认为显示记录会更快

    不,因为索引的叶子页在双向链接列表中链接在一起,并且可以向前或向后读取,所以无论如何都不需要。

    向后扫描无法并行化,但希望您不必担心。

    无论如何,为了显示客户记录,您可能都在使用不同的索引,而前导列customerid使其与此无关。

    0 0
相关问答

4

回答

Spark 【问答合集】

社区小助手 2019-05-29 14:13:40 127147浏览量 回答数 4

18

回答

【大咖问答】对话PostgreSQL 中国社区发起人之一,阿里云数据库高级专家 德哥

阿里ACE 彭飞 2019-07-10 09:36:10 1039882浏览量 回答数 18

145

回答

【新手入门】云服务器linux使用手册

fanyue88888 2012-11-26 17:14:18 157701浏览量 回答数 145

8

回答

OceanBase 使用动画(持续更新)

mq4096 2019-02-20 17:16:36 337017浏览量 回答数 8

38

回答

[@饭娱咖啡][¥20]对于慢sql有没有什么比较实用的诊断和处理方法?

江小白太白 2018-10-30 18:47:38 142071浏览量 回答数 38

22

回答

爬虫数据管理【问答合集】

我是管理员 2018-08-10 16:37:41 147243浏览量 回答数 22

2

回答

mySQL数据库报错You have an error in your SQL syntax

落地花开啦 2016-02-14 16:09:24 128919浏览量 回答数 2

8

回答

flink sql 支持checkpoints吗?

游客izljdlkgbdwfc 2019-07-10 17:46:37 123985浏览量 回答数 8

38

回答

安全组详解,新手必看教程

我的中国 2017-11-30 15:23:46 259843浏览量 回答数 38

21

回答

请教一下数据量有100万条左右要什么配置?

易网网络 2013-03-27 15:18:02 192640浏览量 回答数 21
0
文章
1898
问答
问答排行榜
最热
最新
相关电子书
更多
《2021云上架构与运维峰会演讲合集》
立即下载
《零基础CSS入门教程》
立即下载
《零基础HTML入门教程》
立即下载