Mysql千萬級自增主鍵單錶改復合主鍵分割槽記錄

2021-10-23 20:42:19 字數 1774 閱讀 3773

場景: 撥號記錄表 ,表資料達到1500萬後,明顯感覺查詢速度下降。mysql只支援主鍵分割槽,優先測試按主鍵分割槽後,對列表查詢基本沒有起到優化效果,所以將記錄產生時間和自增id加入設定成復合主鍵,然後再按時間進行分割槽處理。

#1.移除現有分割槽  

alter table clue_call_record remove partitioning;

#2.移除現有主鍵,以及自增功能

alter table `jgb`.`clue_call_record` 

modify column `id` int(11) not null comment '主鍵id' first;

alter table `jgb`.`clue_call_record` 

drop primary key;

#3.新增 id 與建立時間為復合主鍵

alter table organization_clue_library add primary key (id,createtime);

# 4.id重新設為自增主鍵

alter table `jgb`.`clue_call_record` 

modify column `id` int(11) not null auto_increment comment '主鍵id' first;

alter table clue_call_record

partition by range (to_days(createtime)) ( 

partition p201910 values less than (to_days('2019-10-01')),

partition p201912 values less than (to_days('2019-12-01')), 

partition p202006 values less than (to_days('2020-06-01')), 

partition p202008 values less than (to_days('2020-08-01')), 

partition p202010 values less than (to_days('2020-10-01')), 

partition p202012 values less than (to_days('2020-12-01')), 

partition p202102 values less than (to_days('2021-02-01')), 

partition p202104 values less than (to_days('2021-04-01')), 

partition p202106 values less than (to_days('2021-06-01')), 

partition p202108 values less than (to_days('2021-08-01')), 

partition p202110 values less than (to_days('2021-10-01')), 

partition p202112 values less than (to_days('2021-12-01')), 

partition p202202 values less than (to_days('2022-02-01')), 

partition p202204 values less than (to_days('2022-04-01')), 

partition p2022 values less than (maxvalue) )

;

mysql 主鍵自增語句 MySQL 自增主鍵

以下僅考慮 innodb 儲存引擎。自增主鍵有兩個性質需要考慮 單調性每次插入一條資料,其 id 都是比上一條插入的資料的 id 大,就算上一條資料被刪除。連續性插入成功時,其資料的 id 和前一次插入成功時資料的 id 相鄰。自增主鍵的單調性 為何會有單調性的問題?這主要跟自增主鍵最大值的獲取方式...

MySQL設定主鍵自增和非主鍵自增

mysql 每張表只能有1個自動增長字段,這個自動增長字段即可作為主鍵,也可以用作非主鍵使用,但是請注意將自動增長字段當做非主鍵使用時必須必須為其新增唯一索引,否則系統將會報錯。例如 將自動增長字段設定為主鍵 create table t1 id int auto increment primary...

建表主鍵自增 Oracle建表,建主鍵,自增

oracle建表,建主鍵,自增 建表 create table test id number 4 not null primary key,name varchar2 25 序列 create sequence test sequence increment by 1 每次增加幾個 start wi...