• 关于分区索引对齐


    一直在群里听到大牛们说一定要”分区索引对齐“,不然交换分区会失败。

    对于“分区索引对齐”这个关键词,在MSDN的技术文档里, 终于找到了解答:

    索引要与其基表对齐,并不需要与基表参与相同的命名分区函数。但是,索引和基表的分区函数在实质上必须相同,

    即:

    1) 分区函数的参数具有相同的数据类型;

    2) 分区函数定义了相同数目的分区;

    3) 分区函数为分区定义了相同的边界值。

    其实这样有两种理解:

    1) 索引(特指非聚集索引)与表使用同一个分区方案。

    2) 索引(特指非聚集索引)与表使用实质上相同的分区方案。

    关于“实质上相同”的描述,到底哪些可以不同呢?

    1)当然分区函数,分区方案的名字可以不同

    2)索引使用的分区方案可以使用别的文件组。(这其实才是使用不一样名字的分区方案和函数真正的用意,使得索引与表所使用的文件组分开)

    注意点: 索引所使用的分区字段必须与表所使用的分区字段相同。

    例如:表分区是基于sysdate字段来分区的。 即便你的索引是基于workdate,itemco,stco来创建的,你所使用的分区字段也必须是基于sysdate。

    --创建T_SALES表
    CREATE TABLE [dbo].[T_SALES](
        [sysdate] [date] NOT NULL,
        [companyco] [char](2) NOT NULL,
        [stco] [char](4) NOT NULL,
        [workdate] [date] NOT NULL,
        [custype] [char](2) NOT NULL,
        [itemco] [char](6) NOT NULL,
        [eanco] [varchar](18) NOT NULL,
        [divco] [char](2) NULL,
        [deptco] [char](2) NULL,
        [classco] [char](3) NULL,
        [subclassco] [char](2) NULL,
        [salesprice] [money] NULL,
        [salesprice_nt] [money] NULL,
        [salescost] [money] NULL,
        [salescost_nt] [money] NULL,
        [salescnt] [int] NULL,
        [cuscnt] [int] NULL,
        [cost] [money] NULL,
        [downprice] [money] NULL,
        [downcnt] [int] NULL,
        [binkbn] [char](1) NULL,
        [areaco] [varchar](2) NULL,
        [insuser] [varchar](20) NULL,
        [insdate] [datetime] NULL,
        [upduser] [varchar](20) NULL,
        [upddate] [datetime] NULL,
    ) ON [SCH_SALES_SYSDATE]([SYSDATE])
    GO
    --创建聚集索引
    ALTER TABLE [dbo].[T_SALES] ADD CONSTRAINT [PK_SALES_SYSDATE] PRIMARY KEY CLUSTERED
    (
        [sysdate] ASC,
        [itemco] ASC,
        [stco] ASC,
        [companyco] ASC,
        [workdate] ASC,
        [custype] ASC
    ) WITH( PAD_INDEX = ON, FILLFACTOR = 100, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON)
    ON [SCH_SALES_SYSDATE]([SYSDATE])
    GO
    --创建索引
    CREATE NONCLUSTERED INDEX [IDX_SALES_WORKDATE] ON [dbo].[T_SALES] 
    (
        [workdate] ASC,
        [itemco] ASC,
        [stco] ASC,
        [companyco] ASC,
        [workdate] ASC,
        [custype] ASC
    )WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, SORT_IN_TEMPDB = OFF, IGNORE_DUP_KEY = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) 
    ON [SCH_SALES_IDX_SYSDATE]([SYSDATE])
    GO

    本文链接:http://www.cnblogs.com/ajiangg/p/3571043.html

  • 相关阅读:
    我的2015年ccf的解答
    VS中出现“链接器工具错误,XXX工具模块对于SAFESEH映像是不安全的”的解决方法
    记录每次运行的时刻的小程序
    c语言中strcpy与strlen函数对字符串最后的''的处理
    windows8.1的启动目录的路径
    使用feof()判断文件结束时会多输出内容的原因
    [转]android sqlite db-journal文件产生原因及说明
    安卓备份 To Do(待办事项)的数据库
    下载YouTube视频的方法
    Firefox及我使用的firefox扩展
  • 原文地址:https://www.cnblogs.com/ajiangg/p/3571043.html
Copyright © 2020-2023  润新知