MySQL表分割槽(2)列表分割槽 list

2021-07-16 05:24:24 字數 1301 閱讀 2534

list列表分割槽和range分割槽應該說都是一樣的,不同的是range分割槽在分割槽時的依據是一段連續的區間,而list分割槽時依據是一組分布的雜湊值。

partition by list(expr)

「expr」 是某列值或乙個基於某個列值、並返回乙個整數值的表示式,然後通過「values in (value_list)」的方式來定義每個分割槽,其中「value_list」是乙個通過逗號分隔的整數列表。注釋:在mysql 5.1中,當使用list分割槽時,有可能只能匹配整數列表。

create table student

(id varchar(20) not null ,

studentno int(20) not null,

name varchar(20),

age varchar(20)

) partition by list(studentno)

(  partition p1 values in (1,2,3,4),

partition p2 values in (5,6,7,8),

partition p3 values in (9,10,11)

);

如上建立表student,可以理解為將學號1-11的學生分為三個組,分別為p1、p2、p3三個分割槽。需要注意的是一般情況下,針對表的分割槽欄位為int等數值型別。

這使得在表中增加或刪除指定組的學生記錄變得容易起來。例如,假定要刪除p1組的所有學員。查詢「alter table student(表名) drop partition p1(分割槽名);」來進行刪除,這種操作方式比同樣作用的刪除作用的「delete from student where studentno in (1,2,3,4)要有效果的多,我看到可怕的「in」。

【注意】:如果試圖插入列值(或分割槽表示式的返回值)不在分割槽值列表中的一行時。即這是11個學生已經分好組了,要再來乙個學生那可不行了,就這麼多。「insert」將失敗

並報錯。例如,假定list分割槽的採用上面的方案,下面的查詢將失敗:

這是因為「studentno」列值12不能在用於定義分割槽p1, p2, p3l的列表中找到。所以插入12列時不知道要放到那個分割槽。要重點注意的是,list分割槽沒有類似如「values less 

than maxvalue」這樣的包含其他值在內的定義。將要匹配的任何值都必須在值列表中找到。list分割槽除了能和range分割槽結合起來生成乙個復合的子分割槽,與hash和key分割槽結合起來生成復合的子分割槽也是可以的。

mysql表分割槽全文搜尋 Mysql表分割槽

什麼時候使用分割槽 海量資料 資料表索引大於伺服器有效記憶體 分割槽的限制 大部分只能對資料表的整型列進行分割槽,或者資料列可以通過分割槽函式轉化成整型列 其中columns支援 integer string date datetime型別 最大分割槽數目不能超過1024 如果含有唯一索引或者主鍵,...

mysql表分割槽

表分割槽的優點 查詢優化 缺點 除了資料庫管理方面複雜了點,其它的還沒有發現 只有5.1及之後的版本才支付分割槽,同時5.1中分割槽的一些維護的工具還不完善 mysql目前四種分割槽 1range 根據某個列的某種運算進行分割槽,分割槽的標誌都是該列的某種運算後的連續區間 create table ...

mysql 表分割槽

修改表的主鍵 alter table tb channel pv drop primary key,add primary key id channel 測試新增分割槽和刪除分割槽 新增刪除range分割槽 1 建立乙個分割槽 create table titles emp no int not n...