zoukankan      html  css  js  c++  java
  • SqlServer中的(分区)表文件组

    获取一个表的文件组信息,有如下脚本:

    SELECT OBJECT_SCHEMA_NAME(t.object_id) AS schema_name
    ,t.name AS table_name
    ,i.index_id
    ,i.name AS index_name
    ,ds.name AS filegroup_name
    ,FORMAT(p.rows, '#,###') AS rows
    FROM sys.tables t
    INNER JOIN sys.indexes i ON t.object_id=i.object_id
    INNER JOIN sys.filegroups ds ON i.data_space_id=ds.data_space_id
    INNER JOIN sys.partitions p ON i.object_id=p.object_id AND i.index_id=p.index_id
    ORDER BY t.name, i.index_id

    但红框圈出的表是做过表分区的,获取的文件组信息是错误的,应考虑表分区问题,用如下脚本获取表文件组:

    SELECT OBJECT_SCHEMA_NAME(t.object_id) AS schema_name
    ,t.name AS table_name
    ,i.index_id
    ,i.name AS index_name
    ,p.partition_number
    ,fg.name AS filegroup_name
    ,FORMAT(p.rows, '#,###') AS rows
    FROM sys.tables t
    INNER JOIN sys.indexes i ON t.object_id = i.object_id
    INNER JOIN sys.partitions p ON i.object_id=p.object_id AND i.index_id=p.index_id
    LEFT OUTER JOIN sys.partition_schemes ps ON i.data_space_id=ps.data_space_id
    LEFT OUTER JOIN sys.destination_data_spaces dds ON ps.data_space_id=dds.partition_scheme_id AND p.partition_number=dds.destination_id
    INNER JOIN sys.filegroups fg ON COALESCE(dds.data_space_id, i.data_space_id)=fg.data_space_id

     这样,获取的文件组才是正确的。学习自:https://jasonstrate.com/2013/01/29/determining-file-group-for-a-table/,摘其最重要的一条信息:

      简言之,“分区索引不再决定数据的位置,而是由分区方案决定”。

  • 相关阅读:
    30 个最好的jQuery表单插件
    Jquery Tools——不可错过的Jquery UI库(三)
    RedHat Linux AS5安装Oracle 10g 及常见问题
    老婆一直在你身旁,写给咱们的孩子
    又一篇关于中航信的文章
    Java自定义异常
    php文件复制升级
    PHP文件复制
    hdu 2428
    hdu 1358 KMP的应用
  • 原文地址:https://www.cnblogs.com/seanyan/p/14821163.html
Copyright © 2011-2022 走看看