精华内容
下载资源
问答
  • 分区 1适用于处理大数据量,如TB级的 2为了提高巨型数据库的读写和查询速度 ...5对表进行分区时,必须为表中每一条记录指定所属分区,该记录属于哪个分区是由分区表对该记录的匹配字段决定的。 ...

    分区
    1适用于处理大数据量,如TB级的
    2为了提高巨型数据库的读写和查询速度
    3用户可以在创建表是应用分区技术,将数据以分区形式保存
    4分区是指将巨型的表或者索引分隔成相对较小的,可独立管理的部分。分区后的表与未分区的表在执行DML语句没有区别.
    5对表进行分区时,必须为表中每一条记录指定所属分区,该记录属于哪个分区是由分区表对该记录的匹配字段决定的。
    6分区字段可以是一个字段或者多个字段的组合。
    7当分区表确定是,用户对分区表进行插入更新或者删除操作时,oracle会自动根据分区字段的值来选择存储存取。
    8创建分区表时,不指定分区名,oracle将自动对分区进行命名。

    分区表的分类
    范围分区:对数据表的某个值的范围进行分区,需要使用partition by range字句。
    散列分区:
    列表分区:
    组合范围散列分区:
    组合范围列表分区:

    创建范围分区表
    create table student_partition(
    sno varchar2(10) ,
    sname varchar2(20),
    sage number(2),
    score number(2)
    )partition by range(score)–范围分区表
    (
    partition part1 values less than(60) tablespace myspace,
    partition part2 values less than(80) tablespace myspace,
    partition part3 values less than(maxvalue) tablespace users
    );

    insert into student_partition values(‘1’,’我叫分区1’,12,55);
    insert into student_partition values(‘2’,’我叫分区1’,12,56);

    insert into student_partition values(‘3’,’我叫分区2’,12,76);
    insert into student_partition values(‘4’,’我叫分区3’,12,86);
    这里写图片描述

    解释:
    partition by range(score)–范围分区表
    range(score):按socre列进行分区
    part1:分区的名称
    tablespace myspace:为part1分区指定存储表空间

    查询分区里面的数据
    select * from student_partition partition(part1);
    select * from student_partition partition(part2);
    select * from student_partition partition(part3);
    这里写图片描述

    转载于:https://www.cnblogs.com/feiZhou/p/9344282.html

    展开全文
  • oralce,创建分区,子分区表,分区索引,查询分区对应的数据sql

    --创建分区表,带默认子分区

    --DROP TABLE SA.BUSTB_TESTRESULT;
    CREATE table SA.BUSTB_TESTRESULT
    (
      SUMMAR_ID     NUMBER,
      ITEM_ID       NUMBER,
      VALUE         VARCHAR2(400),
      RESULT        VARCHAR2(20),
      TESTSTARTTIME TIMESTAMP(6),
      PROJECT_ID    NUMBER,
      FAILMESSAGE   VARCHAR2(1000),
      ERRORMESSAGE  VARCHAR2(1000),
      SPENDTIME     NUMBER
    )
    tablespace XDCDATA
    PARTITION BY RANGE("TESTSTARTTIME") SUBPARTITION BY LIST ("PROJECT_ID")

              PARTITION RESULT_PART_201401 VALUES LESS THAN(TIMESTAMP' 2014-02-01 00:00:00')TABLESPACE XDCDATA           
              ( 
                    SUBPARTITION RESULT_PART_201401_0 VALUES (0) TABLESPACE XDCDATA     
              )
    );


    --添加分区

    ALTER table BUSTB_TESTRESULT ADD PARTITION RESULT_PART_201402 values less than (TIMESTAMP' 2014-03-01 00:00:00')
        tablespace XDCDATA (SUBPARTITION RESULT_PART_201402_0 VALUES (0) tablespace XDCDATA);

    ALTER table BUSTB_TESTRESULT ADD PARTITION RESULT_PART_201403 values less than (TIMESTAMP' 2014-04-01 00:00:00')
        tablespace XDCDATA (SUBPARTITION RESULT_PART_201403_0 VALUES (0) tablespace XDCDATA);

    ALTER TABLE BUSTB_TESTRESULT ADD PARTITION RESULT_PART_201411 VALUES LESS THAN (TIMESTAMP' 2014-12-01 00:00:00')
        TABLESPACE XDCDATA (SUBPARTITION RESULT_PART_201411_61 VALUES (61) TABLESPACE XDCDATA);


    --添加子分区

    ALTER TABLE BUSTB_TESTRESULT MODIFY PARTITION RESULT_PART_201411 ADD SUBPARTITION  RESULT_PART_201411_62 VALUES (62);


    --创建分区索引

    --DROP INDEX SA.BUSTB_TESTRESULT_IDX1;

    CREATE INDEX SA.BUSTB_TESTRESULT_IDX1 ON SA.BUSTB_TESTRESULT (SUMMAR_ID, ITEM_ID) TABLESPACE XDCIDX LOCAL
    (
    PARTITION "RESULT_PART_201401" TABLESPACE "XDCIDX",
    PARTITION "RESULT_PART_201402" TABLESPACE "XDCIDX",
    PARTITION "RESULT_PART_201403" TABLESPACE "XDCIDX",
    PARTITION "RESULT_PART_201411" TABLESPACE "XDCIDX"
    );

    --数量要和表分区数一致,否则会报错

     LOCAL 索引的分区数必须等于基础表的分区数


    --查询分区,子分区对应的数据,
    SELECT * FROM BUSTB_TESTRESULT  PARTITION(RESULT_PART_201411);
    SELECT * FROM BUSTB_TESTRESULT  SUBPARTITION(RESULT_PART_201411_61); 
    SELECT * FROM BUSTB_TESTRESULT  SUBPARTITION(RESULT_PART_201411_62);

    展开全文
  • clickhouse中如何查询分区表分区及表容量–这个问题相信大家在使用clickhouse分区表时都会经常遇到,其实clickhouse表的元数据信息都存储在system.parts表中,可以通过该表对clickhouse上所有表进行查询表容量大小、...

    clickhouse中如何查询分区表分区及表容量–这个问题相信大家在使用clickhouse分区表时都会经常遇到,其实clickhouse表的元数据信息都存储在system.parts表中,可以通过该表对clickhouse上所有表进行查询表容量大小、行数、压缩率及分区信息等进行查询了解。

    1. system.parts表schema解析

    system.parts表schema说明如下:

    `partition`(String)-- 分区名称。
    `name`(String)-- 数据部分的名称。
    `part_type`(String)-- 数据部分的存储格式。
    `active`(UInt8)-- 指示数据部分是否处于活动状态的标志。如果数据部分处于活动状态,则会在表中使用它。否则,将其删除。合并后,不活动的数据部分仍然保留。
    `marks`(UInt64)-- 标记数。要获得数据部分中的大约行数,请乘以marks索引粒度(通常为8192)(此提示不适用于自适应粒度)。
    `rows`(UInt64)-- 行数。
    `bytes_on_disk`(UInt64)-- 所有数据片段的总大小(以字节为单位)。
    `data_compressed_bytes`(UInt64)-- 数据片段中压缩数据的总大小。不包括所有辅助文件(例如,带标记的文件)。
    `data_uncompressed_bytes`(UInt64)-- 数据片段中未压缩数据的总大小。不包括所有辅助文件(例如,带标记的文件)。
    `marks_bytes`(UInt64)-- 带标记的文件的大小。
    `modification_time`DateTime--包含数据片段的目录被修改的时间。这通常对应于数据零件创建的时间。
    `remove_time`DateTime-- 数据片段变为非活动状态的时间。
    `refcount`(UInt32)-- 使用数据片段的位置数。大于2的值表示在查询或合并中使用了数据部分。
    `min_date`Date-- 数据片段中日期键的最小值。
    `max_date`Date-- 数据片段中日期键的最大值。
    `min_time`DateTime-- 数据片段中日期和时间键的最小值。
    `max_time`DateTime-- 数据片段中日期和时间键的最大值。
    `partition_id`(String)-- 分区的ID。
    `min_block_number`(UInt64)-- 合并后组成当前部分的数据片段的最小数量。
    `max_block_number`(UInt64)-- 合并后组成当前部分的最大数据片段数。
    `level`(UInt32)-- 合并树的深度。零表示当前零件是通过插入而不是通过合并其他零件来创建的。
    `data_version`(UInt64)-- 用于确定应将哪些突变应用于数据部分(版本高于的突变data_version)的编号。
    `primary_key_bytes_in_memory`(UInt64)-- 主键值使用的内存量(以字节为单位)。
    `primary_key_bytes_in_memory_allocated`(UInt64)-- 为主键值保留的内存量(以字节为单位)。
    `is_frozen`(UInt8)-- 显示分区数据备份存在的标志。1,备份存在。0,备份不存在。有关更多详细信息,请参见“冻结分区”。
    `database`(String)-- 数据库的名称。
    `table`(String)-- 表的名称。
    `engine`(String)-- 不带参数的表引擎的名称。
    `path`(字符串)-- 包含数据零件文件的文件夹的绝对路径。
    `disk`(字符串)-- 存储数据部分的磁盘的名称。
    `hash_of_all_files`(字符串)-- 压缩文件的sipHash128。
    `hash_of_uncompressed_files`(String)-- 未压缩文件(带有标记的文件,索引文件等)的sipHash128。
    `uncompressed_hash_of_compressed_files`(String)-- 压缩文件中的数据的sipHash128,就好像它们是未压缩的一样。
    `delete_ttl_info_min`DateTime-- TTL DELETE规则的日期和时间键的最小值。
    `delete_ttl_info_max`DateTime-- TTL DELETE规则的日期和时间键的最大值。
    `move_ttl_info.expression`(Array(String))-- 表达式数组。每个表达式定义一个TTL MOVE规则。
    `move_ttl_info.min`(Array(DateTime))-- 日期和时间值的数组。每个元素都描述了TTL MOVE规则的最小键值。
    `move_ttl_info.max`(Array(DateTime))-- 日期和时间值的数组。每个元素都描述了TTL MOVE规则的最大键值。
    `bytes`(UInt64)-- bytes_on_disk的别名。
    `marks_size`(UInt64)-- marks_bytes的别名。
    

    2.查看数据库总体容量、行数、压缩率

    localhost :) SELECT
    :-]     sum(rows) AS `总行数`,
    :-]     formatReadableSize(sum(data_uncompressed_bytes)) AS `原始大小`,
    :-]     formatReadableSize(sum(data_compressed_bytes)) AS `压缩大小`,
    :-]     round((sum(data_compressed_bytes) / sum(data_uncompressed_bytes)) * 100, 0) AS `压缩率`
    :-] FROM system.parts;
    
    SELECT
        sum(rows) AS `总行数`,
        formatReadableSize(sum(data_uncompressed_bytes)) AS `原始大小`,
        formatReadableSize(sum(data_compressed_bytes)) AS `压缩大小`,
        round((sum(data_compressed_bytes) / sum(data_uncompressed_bytes)) * 100, 0) AS `压缩率`
    FROM system.parts
    
    Query id: 38b59b29-d394-48a3-9424-c7354270b8ea
    
    ┌─────总行数─┬─原始大小─┬─压缩大小───┬─压缩率─┐
    │ 87518924183.06 TiB │ 345.38 GiB │     11 │
    └────────────┴──────────┴────────────┴────────┘
    
    1 rows in set. Elapsed: 1.679 sec. Processed 18.14 thousand rows, 11.92 MB (10.80 thousand rows/s., 7.10 MB/s.)
    

    3.查看数据表容量、行数、压缩率

    在此查询一张测试标签表的信息

    --在此查询一张临时表的信息
    localhost :) SELECT
    :-]     table AS `表名`,
    :-]     sum(rows) AS `总行数`,
    :-]     formatReadableSize(sum(data_uncompressed_bytes)) AS `原始大小`,
    :-]     formatReadableSize(sum(data_compressed_bytes)) AS `压缩大小`,
    :-]     round((sum(data_compressed_bytes) / sum(data_uncompressed_bytes)) * 100, 0) AS `压缩率`
    :-] FROM system.parts
    :-] WHERE table IN ('label')
    :-] GROUP BY table;
    
    SELECT
        table AS `表名`,
        sum(rows) AS `总行数`,
        formatReadableSize(sum(data_uncompressed_bytes)) AS `原始大小`,
        formatReadableSize(sum(data_compressed_bytes)) AS `压缩大小`,
        round((sum(data_compressed_bytes) / sum(data_uncompressed_bytes)) * 100, 0) AS `压缩率`
    FROM system.parts
    WHERE table IN ('label')
    GROUP BY table
    
    Query id: da621ae1-5a1b-4394-8ccd-db60bf628bfd
    
    ┌─表名──┬─总行数─┬─原始大小─┬─压缩大小─┬─压缩率─┐
    │ label │      386.00 B  │ 151.00 B │    176 │
    └───────┴────────┴──────────┴──────────┴────────┘
    
    1 rows in set. Elapsed: 0.005 sec.
    

    3.查看数据表分区信息

    查看测试表在20年12月的分区信息

    --查看测试表在20年12月的分区信息
    localhost :) SELECT
    :-]     partition AS `分区`,
    :-]     sum(rows) AS `总行数`,
    :-]     formatReadableSize(sum(data_uncompressed_bytes)) AS `原始大小`,
    :-]     formatReadableSize(sum(data_compressed_bytes)) AS `压缩大小`,
    :-]     round((sum(data_compressed_bytes) / sum(data_uncompressed_bytes)) * 100, 0) AS `压缩率`
    :-] FROM system.parts
    :-] WHERE (database IN ('fct_boss')) AND (table IN ('fct_boss_register_event')) AND (partition LIKE '2020-12-%')
    :-] GROUP BY partition
    :-] ORDER BY partition ASC;
    
    SELECT
        partition AS `分区`,
        sum(rows) AS `总行数`,
        formatReadableSize(sum(data_uncompressed_bytes)) AS `原始大小`,
        formatReadableSize(sum(data_compressed_bytes)) AS `压缩大小`,
        round((sum(data_compressed_bytes) / sum(data_uncompressed_bytes)) * 100, 0) AS `压缩率`
    FROM system.parts
    WHERE (database IN ('fct_boss')) AND (table IN ('fct_boss_register_event')) AND (partition LIKE '2020-12-%')
    GROUP BY partition
    ORDER BY partition ASC
    
    Query id: 3c4c68e7-bdf1-41c7-a337-ddbdc3dfab1b
    
    ┌─分区────────┬─总行数──┬─原始大小───┬─压缩大小─────┬──压缩率─┐
    │ 2020-12-01140602.62 MiB  │ 810.42 KiB  │     30 │
    │ 2020-12-02130102.44 MiB  │ 759.27 KiB  │     30 │
    │ 2020-12-03139182.62 MiB  │ 817.41 KiB  │     30 │
    │ 2020-12-04220384.12 MiB  │ 1.26 MiB    │     31 │
    │ 2020-12-05301045.57 MiB  │ 1.72 MiB    │     31 │
    │ 2020-12-06306065.72 MiB  │ 1.74 MiB    │     30 │
    │ 2020-12-07204133.83 MiB  │ 1.16 MiB    │     30 │
    │ 2020-12-08123052.31 MiB  │ 711.07 KiB  │     30|  ......    |        |           |             |        |
    └────────────┴────────┴───────────┴─────────────┴────────┘
    

    4.查看数据表字段的信息

    localhost :) SELECT
    :-]     column AS `字段名`,
    :-]     any(type) AS `类型`,
    :-]     formatReadableSize(sum(column_data_uncompressed_bytes)) AS `原始大小`
    :-]     formatReadableSize(sum(column_data_compressed_bytes)) AS `压缩大小`,
    :-]     sum(rows) AS `行数`
    :-] FROM system.parts_columns
    :-] WHERE (database = 'test') AND (table = 'label')
    :-] GROUP BY column
    :-] ORDER BY column ASC ;
    
    SELECT
        column AS `字段名`,
        any(type) AS `类型`,
        formatReadableSize(sum(column_data_uncompressed_bytes)) AS `原始大小`,
        formatReadableSize(sum(column_data_compressed_bytes)) AS `压缩大小`,
        sum(rows) AS `行数`
    FROM system.parts_columns
    WHERE (database = 'test') AND (table = 'label')
    GROUP BY column
    ORDER BY column ASC
    
    Query id: 6cbed55b-94e6-46c5-b965-93f71875bb39
    
    ┌─字段名─────┬─类型──────────┬─原始大小─┬─压缩大小─┬─行数─┐
    │ childs     │ Array(String)0.00 B   │ 0.00 B   │    3 │
    │ label_name │ String        │ 0.00 B   │ 0.00 B   │    3 │
    │ user_id    │ String        │ 0.00 B   │ 0.00 B   │    3 │
    └────────────┴───────────────┴──────────┴──────────┴──────┘
    

    5. system.parts_columns表 schema解析

    system.parts_columns表 schema说明如下:

    `partition`(String)-- 分区名称。
    `name`(String)-- 数据片段的名称。
    `part_type`(String)-- 数据片段的存储格式。
    `active`(UInt8)-- 指示数据部分是否处于活动状态的标志。如果数据部分处于活动状态,则会在表中使用它。否则,将其删除。合并后,不活动的数据部分仍然保留。
    `marks`(UInt64)-- 标记数。要获得数据部分中的大约行数,请乘以marks索引粒度(通常为8192)(此提示不适用于自适应粒度)。
    `rows`(UInt64)-- 行数。
    `bytes_on_disk`(UInt64)-- 所有数据部分文件的总大小(以字节为单位)。
    `data_compressed_bytes`(UInt64)-- 数据部分中压缩数据的总大小。不包括所有辅助文件(例如,带标记的文件)。
    `data_uncompressed_bytes` (UInt64) --数据部分中未压缩数据的总大小。不包括所有辅助文件 (例如,带标记的文件)。
    `marks_bytes` (UInt64) --带有标记的文件的大小。
    `modification_time`DateTime--包含数据部分的目录被修改的时间。这通常对应于数据零件创建的时间。
    `remove_time`DateTime--数据部分变为非活动状态的时间。
    `refcount` (UInt32) --使用数据部分的位置数。大于2的值表示在查询或合并中使用了数据部分。
    `min_date`Date--数据部分中日期键的最小值。
    `max_date`Date--数据部分中日期密钥的最大值。
    `partition_id` (String) --分区的ID。
    `min_block_number` (UInt64) --合并后组成当前部分的数据部分的最小数量。
    `max_block_number` (UInt64) --合并后组成当前部分的最大数据部分数。
    `level` (UInt32) --合并树的深度。零表示当前零件是通过插入而不是通过合并其他零件来创建的。
    `data_version` (UInt64) --用于确定应将哪些突变应用于数据部分 (版本高于的突变data_version)的编号。
    `primary_key_bytes_in_memory` (UInt64) --主键值使用的内存量 (以字节为单位)。
    `primary_key_bytes_in_memory_allocated` (UInt64) --为主键值保留的内存量 (以字节为单位)。
    `database` (String) --数据库名称。
    `table` (String) --表的名称。
    `engine` (String) --不带参数的表引擎的名称。
    `disk_name` (String) --存储数据部分的磁盘的名称。
    `path` (String) --包含数据零件文件的文件夹的绝对路径。
    `column` (String) --列的名称。
    `type` (String) --列类型。
    `column_position` (UInt64) --以1开头的表中列的顺序位置。
    `default_kind` (字符串)  --表达类型 (DEFAULT,MATERIALIZED,ALIAS作为默认值),或者如果没有定义它为空字符串。
    `default_expression` (String) --默认值的表达式,如果未定义,则为空字符串。
    `column_bytes_on_disk` (UInt64) --列的总大小,以字节为单位。
    `column_data_compressed_bytes` (UInt64) --列中压缩数据的总大小,以字节为单位。
    `column_data_uncompressed_bytes` (UInt64) --列中解压缩数据的总大小,以字节为单位。
    `column_marks_bytes` (UInt64) --带标记的列的大小,以字节为单位。
    `bytes` (UInt64) --的别名bytes_on_disk。
    `marks_size` (UInt64) --的别名marks_bytes。
    
    展开全文
  • 在创建完分区表后,可以向分区表中直接插入数据,而不用去管它这些数据放在哪个物理上的数据表中。接上篇文章,我们在创建好的分区表中插入几条数据:    从以上代码中可以看出,我们一共在数据表中插入了13...

     在创建完分区表后,可以向分区表中直接插入数据,而不用去管它这些数据放在哪个物理上的数据表中。接上篇文章,我们在创建好的分区表中插入几条数据:

    </mce:script><mce:script type="text/javascript" src="http://hi.images.csdn.net/js/blog/tiny_mce/plugins/syntaxhl/langs/zh.js" mce_src="http://hi.images.csdn.net/js/blog/tiny_mce/plugins/syntaxhl/langs/zh.js"></mce:script>"50" rows="15" name="code" class="c-sharp">insert Sale ([Name],[SaleTime]) values ('张三','2009-1-1')
    insert Sale ([Name],[SaleTime]) values ('李四','2009-2-1')
    insert Sale ([Name],[SaleTime]) values ('王五','2009-3-1')
    insert Sale ([Name],[SaleTime]) values ('钱六','2010-4-1')
    insert Sale ([Name],[SaleTime]) values ('赵七','2010-5-1')
    insert Sale ([Name],[SaleTime]) values ('张三','2011-6-1')
    insert Sale ([Name],[SaleTime]) values ('李四','2011-7-1')
    insert Sale ([Name],[SaleTime]) values ('王五','2011-8-1')
    insert Sale ([Name],[SaleTime]) values ('钱六','2012-9-1')
    insert Sale ([Name],[SaleTime]) values ('赵七','2012-10-1')
    insert Sale ([Name],[SaleTime]) values ('张三','2012-11-1')
    insert Sale ([Name],[SaleTime]) values ('李四','2013-12-1')
    insert Sale ([Name],[SaleTime]) values ('王五','2014-12-1')

         从以上代码中可以看出,我们一共在数据表中插入了13条数据,其中第1至3条数据是插入到第1个物理分区表中的;第4、5条数据是插入到第2个物理分区表中的;第6至8条数据是插入到第3个物理分区表中的;第9至11条数据是插入到第4个物理分区表中的;第12、13条数据是插入到第5个物理分区表中的。

        从SQL语句中可以看出,在向分区表中插入数据方法和在普遍表中插入数据的方法是完全相同的,对于程序员而言,不需要去理会这13条记录研究放在哪个数据表中。当然,在查询数据时,也可以不用理会数据到底是存放在哪个物理上的数据表中。如使用以下SQL语句进行查询:

    [c-sharp] view plaincopy
    1. select * from Sale  
     

        查询的结果如下图所示:

        从上面两个步骤中,根本就感觉不到数据是分别存放在几个不同的物理表中,因为在逻辑上,这些数据都属于同一个数据表。如果你非想知道哪条记录是放在哪个物理上的分区表中,那么就必须使用到$PARTITION函数,这个函数的可以调用分区函数,并返回数据所在物理分区的编号。

        说起来有点难懂,不过用起来很简单。$PARTITION的语法是:

        $PARTITION.分区函数名(表达式)

        假设,你想知道2010年10月1日的数据会放在哪个物理分区表中,你就可以使用以下语句来查看。

    [c-sharp] view plaincopy
    1. select $PARTITION.partfunSale ('2010-10-1')  
     

        在以上语句中,partfunSale()为分区函数名,括号中的表达式必须是日期型的数据或可以隐式转换成日期型的数据,如果要问我为什么,那么就回想一个怎么定义分区函数的吧(CREATE PARTITION FUNCTION partfunSale (datetime))。在定义partfunSale()函数时,指定了参数为日期型,所以括号中的表达式必须是日期型或可以隐式转换成日期型的数据。以上代码的运行结果如下图所示:

        在该图中可以看出,分区函数返回的结果为2,也就是说,2010年10月1日的数据会放在第2个物理分区表中。

     

        再进一步考虑,如果想具体知道每个物理分区表中存放了哪些记录,也可以使用$PARTITION函数。因为$PARTITION函数可以得到物理分区表的编号,那么只要将$PARTITION.partfunSale(SaleTime)做为where的条件使用即可,如以下代码 所示:

    [c-sharp] view plaincopy
    1. select * from Sale where $PARTITION.partfunSale(SaleTime)=1  
    2. select * from Sale where $PARTITION.partfunSale(SaleTime)=2  
    3. select * from Sale where $PARTITION.partfunSale(SaleTime)=3  
    4. select * from Sale where $PARTITION.partfunSale(SaleTime)=4  
    5. select * from Sale where $PARTITION.partfunSale(SaleTime)=5  
     

        以上代码的运行结果如下图所示:

        从上图中我们可以看到每个分区表中的数据记录情况——和我们插入时设置的情况完全一致。同理可得,如果要统计每个物理分区表中的记录数,可以使用如下代码:

    [c-sharp] view plaincopy
    1. select $PARTITION.partfunSale(SaleTime) as 分区编号,count(id) as 记录数 from Sale group by $PARTITION.partfunSale(SaleTime)  
     

        以上代码的运行结果如下图所示:

     

        除了在插入数据时程序员不需要去考虑分区表的物理情况之外,就是连修改数据也不需要考虑。SQL Server会自动将记录从一个分区表移到另一个分区表中,如以下代码所示:

    [c-sharp] view plaincopy
    1. --统计所有分区表中的记录总数  
    2. select $PARTITION.partfunSale(SaleTime) as 分区编号,count(id) as 记录数 from Sale group by $PARTITION.partfunSale(SaleTime)  
    3. --修改编号为1的记录,将时间改为2019年1月1日  
    4. update Sale set SaleTime='2019-1-1' where id=1  
    5. --重新统计所有分区表中的记录总数  
    6. select $PARTITION.partfunSale(SaleTime) as 分区编号,count(id) as 记录数 from Sale group by $PARTITION.partfunSale(SaleTime)  
     

        在以上代码中,程序员将其中一条数据的时间改变了,从分区函数中可以得知,这条记录应该从第一个分区表移到第五个分区表中,如下图所示。而整个操作过程,程序员是完全不需要干预的。

     

    来源:http://blog.csdn.net/smallfools/archive/2009/12/03/4932936.aspx

    展开全文
  • oracle 动态查询表分区数据 需求说明 :将查询表分区数据插入到现有中 declare v_sql varchar2(100) := ‘’; --定义空sql begin select TO_CHAR(SYSDATE - 1, 'YYYYMMDD') into v_sql from dual; --给字符串sql...
  • Oracle 表分区查询操作,以及删除表分区数据自动重建索引 --查指定分区数据 SELECT COUNT(*) FROM T_REALTIME_GPS_PARTCAR_HIS PARTITION(partname); --查看表分区 select table_name,partition_name from user...
  • 在成功对原表进行散列分区并存入测试数据之后,领导说验证一下分区表数据条数与输入的测试数据条数是否一致,于是要查询分区表的数据条数。 由于分区表的个数较多,不想一个个手动输入再查找,于是采用存储过程动态...
  • oracle查询分区表中的数据

    千次阅读 2019-01-17 11:04:00
    select * from TABLE_NAME partition(分区名) T WHERE T.COL_NAME= 'XX'; 转载于:https://www.cnblogs.com/haizine/p/10281130.html
  • 在企业上使用 Hive进行离线批量数据统计时,有时会遇到 Oozie工作流调度失败,导致很多 ptdate时间分区没有数据...一、在正式介绍 Hive 动态分区恢复静态分区表数据时,先介绍一下 hive load导入数据的用法 hive ...
  • 前言上一章我们学习了《SQL Server分区表(一):分区表的介绍》,本章我们来看看在分区表中如何添加、查询、修改数据。正文开始在创建完分区表后,可以向分区表中直接插入数据,而不用去管...
  • 本文对于Interval partition分区表查询数据的方法提供了可行方案,并在测试环境进行验证。特别的,本文提供了2种MOS上的方法(福利),并将相关文章附在文末,供没有MOS账号的朋友参考学习。 ...
  • 数据表按日分区,如果想查询多个分区数据时,就会导致不走索引。 如查一个月的数据  条件为: where data_date >=to_date('2014-4-1','yyyy-mm-dd') and data_date  条件改为添加 一个临时 (select to_...
  • 查询ods_deal数据多个分区数据 #day为一天数分区数据 select * from ods_deal where day in (20210414,20210415);
  • 在创建完分区表后,可以向分区表中直接插入数据,而不用去管它这些数据放在哪个物理上的数据表中。接上篇文章,我们在创建好的分区表中插入几条数据:    从以上代码中可以看出,我们一共在数据表中插入了13...
  • 在创建完分区表后,可以向分区表中直接插入数据,而不用去管它这些数据放在哪个物理上的数据表中。接上篇文章,我们在创建好的分区表中插入几条数据: 从以上代码中可以看出,我们一共在数据表中插入了13条数据,...
  • 在创建完分区表后,可以向分区表中直接插入数据,而不用去管它这些数据放在哪个物理上的数据表中。接上篇文章,我们在创建好的分区表中插入几条数据:  从以上代码中可以看出,我们一共在数据表中插入了13条...
  • Server 2005中的分区表(二):如何添加、查询、修改分区表中的数据 . 2011-07-02 22:52:26   在创建完分区表后,可以向分区表中直接插入数据,而不用去管它这些数据放在哪个物理上的数据表中。接上...
  • oracle分区表的分区和查询

    千次阅读 2019-08-22 22:05:42
    此文从以下几个方面来整理关于分区表的概念及操作: 1.表空间及分区表的概念 2.表分区的具体作用 3.表分区的优缺点 ...分区表:当表中的数据量不断增大,查询数据的速度就会变慢,应用程序的性能就会下降...
  • --根据objectID得知该数据位于哪个分区 select a.object_name, a.object_type, a.subobject_name, a.object_id, a.data_object_id from dba_objects a where object_name = UPPER('TABLE_NAME') and object_...
  • 在创建完分区表后,可以向分区表中直接插入数据,而不用去管它这些数据放在哪个物理上的数据表中。接上篇文章,我们在创建好的分区表中插入几条数据: type="text/javascript" src=...
  • 一 简介:mysql分区表查询相关二 具体 1 查看计划树 explain PARTITIONS ... 2 如果按照非分区键的索引查询,非分区表的性能表现更好,因为会扫描所有分区 3 提倡建议 1 查询分区表要安装分区键+条件进行过滤,并在总...
  • execute immediate '...v_count是个变量,v_table是分区表变量,v_date分区表一个分区名称变量,运行存过这句话直接到异常,报错是ora-00936缺失表达式,我想知道是不是我写的这句话语法不对,还是哪里的问题啊
  • 分区表: 当表中的数据量不断增大,查询数据的速度就会变慢,应用程序的性能就会下降,这时就应该考虑对表进行分区。表进行分区后,逻辑上表仍然是一张完整的表,只是将表中的数据在物理上存放到多个表空间(物理文件...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 4,718
精华内容 1,887
关键字:

查询分区表数据