溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

MySQL5.5中怎么實現多列分區

發布時間:2021-08-13 16:17:37 來源:億速云 閱讀:183 作者:Leah 欄目:數據庫

這篇文章將為大家詳細講解有關MySQL5.5中怎么實現多列分區,文章內容質量較高,因此小編分享給大家做個參考,希望大家閱讀完這篇文章后對相關知識有一定的了解。

  MySQL5.5多列分區是什么

  COLUMNS關鍵字現在允許字符串和日期列作為分區定義列,同時還允許使用多個列定義一個分區,你可能在官方文檔中已經看到了一些例子,如:

  CREATETABLEp1(aINT,bINT,cINT)PARTITIONBYRANGECOLUMNS(a,b)(PARTITIONp01VALUESLESSTHAN(10,20),PARTITIONp02VALUESLESSTHAN(20,30),PARTITIONp03VALUESLESSTHAN(30,40),PARTITIONp04VALUESLESSTHAN(40,MAXVALUE),PARTITIONp05VALUESLESSTHAN(MAXVALUE,MAXVALUE));CREATETABLEp2(aINT,bINT,cINT)PARTITIONBYRANGECOLUMNS(a,b)(PARTITIONp01VALUESLESSTHAN(10,10),PARTITIONp02VALUESLESSTHAN(10,20),PARTITIONp03VALUESLESSTHAN(10,30),PARTITIONp04VALUESLESSTHAN(10,MAXVALUE),PARTITIONp05VALUESLESSTHAN(MAXVALUE,MAXVALUE))

  同樣還有PARTITIONBYRANGECOLUMNS(a,b,c)等其它例子。由于我很長時間都在使用MySQL5.1的分區,我對多列分區的含義不太了解,LESSTHAN(10,10)是什么意思?如果下一個分區是LESSTHAN(10,20)會發生什么?相反,如果是(20,30)又會如何?

  所有這些問題都需要一個答案,在回答之前,他們需要更好地理解我們在做什么。

  MySQL5.5多列分區是什么

  開始時可能有些混亂,當所有分區有一個不同范圍的值時,實際上,它只是在表的一個列上進行了分區,但事實并非如此,在下面的例子中

  CREATETABLEp1_single(aINT,bINT,cINT)PARTITIONBYRANGECOLUMNS(a)(PARTITIONp01VALUESLESSTHAN(10),PARTITIONp02VALUESLESSTHAN(20),PARTITIONp03VALUESLESSTHAN(30),PARTITIONp04VALUESLESSTHAN(40),PARTITIONp05VALUESLESSTHAN(MAXVALUE));

  它和前面的表p1不一樣,如果你在表p1中插入(10,1,1),它將會進入第一個分區,相反,在表p1_single中,它將會進入第二個分區,其原因是(10,1)小于(10,10),如果你僅僅關注第一個值,你還沒有意識到你在比較一個元組,而不是一個單一的值。

  現在我們來分析一下最難懂的地方,當你需要確定某一行應該放在哪里時會發生什么?你是如何確定類似(10,9)<(10,10)這種運算的值的?答案其實很簡單,當你對它們進行排序時,使用相同的方法計算兩條記錄的值。   a=10b=9(a,b)<(10,10)#evaluatesto:(a<10)OR((a=10)AND(b<10))#whichtranslatesto:(10<10)OR((1010=10)AND(9<10))   如果有三列,表達式會更長,但不會更復雜。你首先在第一個項目上測試小于運算,如果有兩個或更多的分區與之匹配,接著就測試第二個項目,如果不止一個候選分區,那還需要測試第三個項目。  

關于MySQL5.5中怎么實現多列分區就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女