程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MYSQL數據庫 >> MySQL綜合教程 >> 十三、mysql 分區之 RANGE && LIST,mysqlrange

十三、mysql 分區之 RANGE && LIST,mysqlrange

編輯:MySQL綜合教程

十三、mysql 分區之 RANGE && LIST,mysqlrange


1.RANGE 分區
    創建實例:
    CREATE TABLE EMP (
        id int not null primary key auto_increment,
        name char(25) not null default ''
    )
    PARTITION BY RANGE (id) ( 將字段id定義為分區的字段
    PARTITION P0 VALUES LESS THAN (100), 99以下的id都歸到p0分區
    PARTITION P1 VALUES LESS THAN (200), 100-199
    PARTITION P2 VALUES LESS THAN (300)  200-299
    );
    PS::因為默認會將0也算進去,所以P0實際可以存儲0-99或-數
    PS::要麼不包含主鍵,如果要包含主鍵,那麼分區字段也必須是主鍵
    PS::mysql5.5以上支持日期進行分區,有什麼作用,^_^,你可以想到的
    
2.List分區
    創建實例:
    CREATE TABLE LIST_EMP (
        tid int not null PRIMARY key auto_increment,
        tname char(20)
    )
    PARTITION BY LIST (tid) (
        PARTITION P0 VALUES IN (1,3,5,7,9),  
        PARTITION P1 VALUES IN (2,4,6,8,10)
    );
    PS::通過上面的2種分區不難看出,RANGE分區是指定一個范圍,而List分區是指定一個列表,在list中,只有指定的值才能存進去!
    PS::個人覺得List分區更多可以用在分類上面
    測試:
    insert into list_emp values (null,'Php');
    insert into list_emp values (null,'Php');
    insert into list_emp values (null,'Php');
    insert into list_emp values (null,'Php');
    insert into list_emp values (null,'Php');
    insert into list_emp values (null,'Php');
    insert into list_emp values (null,'Php');
    insert into list_emp values (null,'Php');
    insert into list_emp values (null,'Php');
    insert into list_emp values (null,'Php');
    
    insert into list_emp values (null,'Php');ERROR 1526 (HY000): Table has no partition for value 11
    
    PS::第11條數據的時候報錯,因為沒有任何分區表包含了它

 


mysql裡的range分區方式與主鍵沖突了怎辦?innodb中沒有主鍵會造成什影響?

innodb沒有索引默認會有隱藏聚集索引Rowid

主要取決於商業邏輯

人觀點:鏟除掉主鍵會對索innodb造成影響用了隱藏索引考慮適當增大分區盡量保持順序寫入還會適當提高效率

mysql 怎給已有表分區

我也找方法 mysql自從5.1開始表分區了

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved