程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MYSQL數據庫 >> MySQL綜合教程 >> 深入了解MySQL 5.5分區功能增強

深入了解MySQL 5.5分區功能增強

編輯:MySQL綜合教程

\

圖 1 大家還沒注意到我MySQL的分區功能也很強了哦

  非整數列分區

  任何使用過分區的人應該都遇到過不少問題,特別是面對非整數列分區時,MySQL 5.1只能處理整數列分區,如果你想在日期或字符串列上進行分區,你不得不使用函數對其進行轉換。

  MySQL 5.5中新增了兩類分區方法,RANG和LIST分區法,同時在新的函數中增加了一個COLUMNS關鍵詞。我們假設有這樣一個表:

CREATE TABLE expenses (
    expense_date DATE NOT NULL,
    category VARCHAR(30),
    amount DECIMAL (10,3)  );

  如果你想使用MySQL 5.1中的分區類型,那你必須將類型轉換成整數,需要使用一個額外的查找表,到了MySQL 5.5中,你可以不用再進行類型轉換了,如:

ALTER TABLE expenses  PARTITION BY LIST COLUMNS (category)  (
    PARTITION p01 VALUES IN ( lodging, food),
    PARTITION p02 VALUES IN ( flights, ground transportation),      PARTITION p03 VALUES IN ( leisure, customer entertainment),
    PARTITION p04 VALUES IN ( communications),
    PARTITION p05 VALUES IN ( fees)  );

  這樣的分區語句除了更加易讀外,對數據的組織和管理也非常清晰,上面的例子只對category列進行分區。

  在MySQL 5.1中使用分區另一個讓人頭痛的問題是date類型(即日期列),你不能直接使用它們,必須使用YEAR或TO_DAYS轉換這些列,如:

/* 在MySQL 5.1中*/
  CREATE TABLE t2
  (
    dt DATE
  )
  PARTITION BY RANGE (TO_DAYS(dt))
  (
    PARTITION p01 VALUES LESS THAN (TO_DAYS(2007-01-01)),
    PARTITION p02 VALUES LESS THAN (TO_DAYS(2008-01-01)),
    PARTITION p03 VALUES LESS THAN (TO_DAYS(2009-01-01)),
    PARTITION p04 VALUES LESS THAN (MAXVALUE));
   SHOW CREATE TABLE t2G   *************************** 1
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved