2012-10-27 125 views
3

當使用列表在MySQL中分區表時,如何爲其餘項目生成分區?剩餘項目的列表分區

E.G:

CREATE TABLE tbl 
(
ID integer 
) 
PARTITION BY LIST (ID) 
( 
    PARTITION P1 values in (1), 
    PARTITION P2 values in (2), 
    PARTITION P3 values in (3), 
    PARTITION Pother values in (<all remaining values of ID>) 
); 

在Oracle中,我使用values in (default),但也不在MySQL的工作。

回答

2

不像range partitioning,沒有「全面」的list partitioning。引用文檔:

與RANGE分區的情況不同,沒有像「MAXVALUE」這樣的「catch-all」 ;分區表達式 的所有預期值應該在PARTITION ... VALUES IN(...)子句中進行介紹。包含不匹配的分區列值的INSERT語句 失敗 錯誤...

不幸的是,我相信,你不能夠在列表和一系列分區或者合併。我不完全確定你爲什麼要在這個特定的實例中使用列表分區;範圍分區不會工作得很好嗎?

CREATE TABLE tbl 
(
ID integer 
) 
PARTITION BY RANGE (ID) 
( 
    PARTITION P1 values less than (2), 
    PARTITION P2 values less than (3), 
    PARTITION P3 values less than (4), 
    PARTITION Pother values less than maxvalue 
); 

我假設這只是一個例子。將主鍵中的每個鍵分區是沒有意義的。

+0

這裏是SQL小提琴:http://sqlfiddle.com/#!9/8b60e/2 –

+0

謝謝@LenielMacaferi,它似乎好像SQL小提琴現在有點破... – Ben

+0

更改MySQL版本在SQL小提琴中。看看它現在是否工作... :)這裏工作。 –