mysql分割槽優化的一些坑

2021-10-09 14:01:14 字數 2540 閱讀 6763

一下幾種都是本人進過測試的都是向資料庫中加入2000w資料,儲存引擎innodb版本5.7主要對比幾種開啟分割槽,與未開啟分割槽之間的優化【ps:如有不對的地方請大手不吝嗇指教】

1.乙個表最多只能有1024個分割槽

2.如果分割槽欄位中有主鍵或者唯一索引的列,那麼所有主鍵列和唯一索引列都必須包含進來

3.分割槽表無法使用外來鍵約束

4.null值會使分割槽過濾無效

5.所有分割槽必須使用相同的儲存引擎

對於此分割槽我在測試的時候使用=、like、等進行where條件測試對比下來感覺分割槽前後並沒有太大的區分,這地方我也只使用某一分割槽

-- 建立表的時候同時將區域分好

create

table part_tab (

c1 int

default

null

,c2 varchar(30

)default

null

,c3 date

default

null

)engine

=innodb

partition

by range (

year

(c3))(

partition p0 values less than (

1995),

partition p1 values less than (

1996),

partition p2 values less than (

1997),

partition p3 values less than (

1998),

partition p4 values less than (

1999),

partition p5 values less than (

2000),

partition p6 values less than (

2001),

partition p7 values less than (

2002),

partition p8 values less than (

2003),

partition p9 values less than (

2004),

partition p10 values less than (

2010),

partition p11 values less than maxvalue )

;--使用儲存函式進行資料模擬插入

create

procedure load_part_tab(

)begin

declare v int

default0;

while v <

20000000

doinsert

into part_tab

values

(null

,'testing partitions'

,adddate(

'1995-01-01'

,(rand(v)

*36520

) mod 3652))

;set v = v +1;

endwhile

;end

--調取對應的函式

call load_part_tab(

);

對於此分割槽,在測試的時候分完區查詢速度明顯提公升當然這地方我只使用了某一分割槽無論之你用in、=之類的效率還是不錯的

create

table tblist1 (

id int

notnull

, store_id int

)partition

by list(store_id)

(partition a valuesin(

0,1,

5,6)

,partition b valuesin(

2,7,

8),partition c valuesin(

3,9,

10),partition d valuesin(

4,11,

12));

對於此分割槽有乙個奇怪的點,他的分割槽資料都不是連續性的,當然還是沒啥效果,用了與沒用都差別不大

mysql的一些優化

前言 sql優化,是一種概率層面的優化。至於是否實際使用了我們的優化,需要通過explain進行推測。注意 服務層中有sql優化器,可能會影響我們的優化,同時註明 sql的優化前提是有索引 有索引 有索引 in和exists的使用場景 select from a where exists selec...

關於mysql的一些坑

使用create table newtable select from oldtable複製表時並沒有複製主鍵 索引以及自增屬性,要重新設定,即刪除後再加上,且設為auto increment的字段必須設為primary key create table newtable select from o...

一些 Mysql 的優化經驗

一些 mysql 的 優化經驗 從資料庫結構做起 字段型別的定義時遵循以下規則 選用字段長度最小 優先使用定長型 盡可能的定義 not null 數值型字段中避免使用 zerofill 如果要儲存的資料為字串,且可能值已知且有限,優先使用 enum 或 set 索引的優化至關重要 以下如果沒有特殊說...