暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Oracle 范围分区查询

askTom 2017-06-16
191

问题描述

嗨,康纳,

在进行以下分区之后,来自KISS系列的视频开始自己练习并进行查询:

在范围分区中,我想基于国家/地区列创建分区,并且属于AU的所有值都应转到AU_01分区,而NZ应转到NZ_01分区,

第一点是,我不能说分区AU_01值等于 ('AU') ->,所以只有特定分区才到这里?在下面的情况下,当我插入两行时,这些仅进入NZ。

CREATE TABLE sku_RANGE
(
   item      VARCHAR2 (100),
   loc       VARCHAR2 (100),
   country   VARCHAR2 (10)
)
PARTITION BY RANGE
   (country)
   (
      PARTITION au_01 VALUES LESS THAN ('AU'),
      PARTITION NZ_01 VALUES LESS THAN ('NZ'));

INSERT INTO sku_RANGE
     VALUES ('100', 'ABC', 'AU');

INSERT INTO sku_RANGE
     VALUES ('100', 'ABC', 'NX');

SELECT *
  FROM SKU_RANGE PARTITION (NZ_01);

复制

专家解答

对于范围分区,您需要提供一个大于分区中的值的值。因此,要使NZ进入NZ_01,小于值必须为 'NZA' (或比 'NZ' 更大的其他值:

CREATE TABLE sku_RANGE
(
   item      VARCHAR2 (100),
   loc       VARCHAR2 (100),
   country   VARCHAR2 (10)
)
PARTITION BY RANGE
   (country)
   (
      PARTITION au_01 VALUES LESS THAN ('AUA'),
      PARTITION NZ_01 VALUES LESS THAN ('NZA'));

INSERT INTO sku_RANGE
     VALUES ('100', 'ABC', 'AU');

INSERT INTO sku_RANGE
     VALUES ('100', 'ABC', 'NZ');

SELECT *
  FROM SKU_RANGE PARTITION (NZ_01);

ITEM  LOC  COUNTRY  
100   ABC  NZ 
复制


但是,如果您所拥有的只是这两个值,我建议改用列表分区:

CREATE TABLE sku_list
(
   item      VARCHAR2 (100),
   loc       VARCHAR2 (100),
   country   VARCHAR2 (10)
)
PARTITION BY LIST
   (country)
   (
      PARTITION au_01 VALUES ('AU'),
      PARTITION NZ_01 VALUES ('NZ'));


INSERT INTO sku_list
     VALUES ('100', 'ABC', 'AU');

INSERT INTO sku_list
     VALUES ('100', 'ABC', 'NZ');

SELECT *
  FROM SKU_LIST PARTITION (NZ_01);

ITEM  LOC  COUNTRY  
100   ABC  NZ 
复制

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论