(8.0.27)
https://dev.mysql.com/doc/refman/8.0/ja/partitioning-overview.html
drop table tab1;
create table tab1
( col1 int primary key
, col2 int
, col3 int
, col4 int
)
partition by range (col1)
( partition p1 values less than (0)
, partition p2 values less than (maxvalue)
);
-- 1. ローカルパーティションインデックス
create index ind2 on tab1(col2);
-- 2. グローバルパーティションインデックス
→作成不可
-- 3. グローバル非パーティションインデックス
→作成不可
-- 確認
show create table tab1;
パーティショニングはテーブルのすべてのデータおよびインデックスに適用されます。
データだけにパーティション化しインデックスは行わないことはできず (その逆も不可)、
テーブルの一部のみをパーティション化することもできません。
(19c)
drop table tab1 purge;
create table tab1
( col1 int primary key
, col2 int
, col3 int
, col4 int
)
partition by range (col2)
( partition p1 values less than (0)
, partition p2 values less than (maxvalue)
);
-- 1. ローカルパーティションインデックス
create index ind2 on tab1(col2) local;
-- 2. グローバルパーティションインデックス
create index ind3 on tab1(col3) global
partition by range (col3)
( partition p31 values less than (1)
, partition p32 values less than (maxvalue)
);
-- 3. グローバル非パーティションインデックス
create index ind4 on tab1(col4);
-- 確認
col INDEX_NAME for a15;
col PARTITION_NAME for a15;
select INDEX_NAME,PARTITIONED from user_indexes where table_name = 'TAB1';
select INDEX_NAME,PARTITION_NAME,HIGH_VALUE from user_ind_partitions where INDEX_NAME like 'IND_';
(14)
create table tab1
( col1 int primary key
, col2 int
, col3 int
, col4 int
)
partition by range ( col1 )
;
create table tab1p1 partition of tab1 for values from (minvalue) to (0);
create table tab1p2 partition of tab1 for values from (0) to (maxvalue);
-- 1. ローカルパーティションインデックス
create index ind2 on tab1(col2);
-- 2. グローバルパーティションインデックス
→作成不可
-- 3. グローバル非パーティションインデックス
→作成不可
ONLYオプションが指定された場合、再帰処理は行われず、そのインデックスは無効と印付けされます。
-- 確認
\d+ tab1
\d+ tab1p1
\d+ tab1p2
(2019)
use test
go
drop partition scheme ps1;
drop partition function pf1;
drop partition scheme ps2;
drop partition function pf2;
create partition function pf1(int) as range right for values (0);
create partition scheme ps1 as partition pf1 all to ([primary]);
create partition function pf2(int) as range left for values (0);
create partition scheme ps2 as partition pf2 all to ([primary]);
drop table tab1;
create table tab1
( col1 int primary key
, col2 int
, col3 int
, col4 int
)
on ps1(col1)
;
-- 1. ローカルパーティションインデックス
create index ind2 on tab1(col2) on ps1(col1);
-- 2. グローバルパーティションインデックス
create index ind3 on tab1(col3) on ps2(col3);
-- 3. グローバル非パーティションインデックス
create index ind4 on tab1(col4) on [primary];
-- 確認
select * from sys.indexes where object_id = object_id('dbo.tab1');
select * from sys.dm_db_partition_stats where object_id = object_id('dbo.tab1');