新聞中心
MySQL 5.5數(shù)據(jù)庫的多列分區(qū)是本文我們主要要介紹的內(nèi)容,本文我們通過一個實例來介紹這一部分內(nèi)容,接下來就讓我們一起來看看吧!

創(chuàng)新互聯(lián)是一家專注于網(wǎng)站制作、成都網(wǎng)站設(shè)計與策劃設(shè)計,濰城網(wǎng)站建設(shè)哪家好?創(chuàng)新互聯(lián)做網(wǎng)站,專注于網(wǎng)站建設(shè)十多年,網(wǎng)設(shè)計領(lǐng)域的專業(yè)建站公司;建站業(yè)務(wù)涵蓋:濰城等地區(qū)。濰城做網(wǎng)站價格咨詢:18982081108
多列分區(qū)
COLUMNS關(guān)鍵字現(xiàn)在允許字符串和日期列作為分區(qū)定義列,同時還允許使用多個列定義一個分區(qū),你可能在官方文檔中已經(jīng)看到了一些例子,如:
- CREATE TABLE p1 (
- a INT,
- b INT,
- c INT
- )
- PARTITION BY RANGE COLUMNS (a,b)
- (
- PARTITION p01 VALUES LESS THAN (10,20),
- PARTITION p02 VALUES LESS THAN (20,30),
- PARTITION p03 VALUES LESS THAN (30,40),
- PARTITION p04 VALUES LESS THAN (40,MAXVALUE),
- PARTITION p05 VALUES LESS THAN (MAXVALUE,MAXVALUE)
- );
- CREATE TABLE p2 (
- a INT,
- b INT,
- c INT
- )
- PARTITION BY RANGE COLUMNS (a,b)
- (
- PARTITION p01 VALUES LESS THAN (10,10),
- PARTITION p02 VALUES LESS THAN (10,20),
- PARTITION p03 VALUES LESS THAN (10,30),
- PARTITION p04 VALUES LESS THAN (10,MAXVALUE),
- PARTITION p05 VALUES LESS THAN (MAXVALUE,MAXVALUE)
- )
同樣還有PARTITION BY RANGE COLUMNS (a,b,c)等其它例子。由于我很長時間都在使用MySQL 5.1的分區(qū),我對多列分區(qū)的含義不太了解,LESS THAN (10,10)是什么意思?如果下一個分區(qū)是LESS THAN (10,20)會發(fā)生什么?相反,如果是(20,30)又會如何?
所有這些問題都需要一個答案,在回答之前,他們需要更好地理解我們在做什么。
開始時可能有些混亂,當(dāng)所有分區(qū)有一個不同范圍的值時,實際上,它只是在表的一個列上進行了分區(qū),但事實并非如此,在下面的例子中
- CREATE TABLE p1_single (
- a INT,
- b INT,
- c INT
- )
- PARTITION BY RANGE COLUMNS (a)
- (
- PARTITION p01 VALUES LESS THAN (10),
- PARTITION p02 VALUES LESS THAN (20),
- PARTITION p03 VALUES LESS THAN (30),
- PARTITION p04 VALUES LESS THAN (40),
- PARTITION p05 VALUES LESS THAN (MAXVALUE)
- );
它和前面的表p1不一樣,如果你在表p1中插入(10,1,1),它將會進入第一個分區(qū),相反,在表p1_single中,它將會進入第二個分區(qū),其原因是(10,1)小于(10,10),如果你僅僅關(guān)注第一個值,你還沒有意識到你在比較一個元組,而不是一個單一的值。
現(xiàn)在我們來分析一下最難懂的地方,當(dāng)你需要確定某一行應(yīng)該放在哪里時會發(fā)生什么?你是如何確定類似(10,9) < (10,10)這種運算的值的?答案其實很簡單,當(dāng)你對它們進行排序時,使用相同的方法計算兩條記錄的值。
- a=10
- b=9
- (a,b) < (10,10) ?
- # evaluates to:
- (a < 10)
- OR
- ((a = 10) AND ( b < 10))
- # which translates to:
- (10 < 10)
- OR
- ((1010 = 10) AND ( 9 < 10))
如果有三列,表達式會更長,但不會更復(fù)雜。你首先在第一個項目上測試小于運算,如果有兩個或更多的分區(qū)與之匹配,接著就測試第二個項目,如果不止一個候選分區(qū),那還需要測試第三個項目。
關(guān)于MySQL 5.5多列分區(qū)的知識就介紹到這里了,希望本次的介紹能夠?qū)δ兴鶐椭?/p>
原文出處:http://lujia35.iteye.com/blog/718899。
【編輯推薦】
- 適合初學(xué)者的MySQL學(xué)習(xí)筆記之管理員常用操作總結(jié)
- 適合初學(xué)者的MySQL學(xué)習(xí)筆記之SELECT語句使用詳解
- MySQL數(shù)據(jù)庫存儲引擎之MyISAM和InnoDB的區(qū)別對比
- 適合初學(xué)者的MySQL學(xué)習(xí)筆記之ORDER BY子句使用詳解
- 適合初學(xué)者的MySQL學(xué)習(xí)筆記之MySQL常用命令操作技巧
當(dāng)前文章:MySQL5.5分區(qū)之多列分區(qū)詳解
分享網(wǎng)址:http://www.dlmjj.cn/article/dpicijh.html


咨詢
建站咨詢
