最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Mysql分區(qū)創(chuàng)建與刪除方式

 更新時(shí)間:2025年02月11日 09:34:22   作者:Donnedaen  
本文詳細(xì)介紹了如何在MySQL中創(chuàng)建和刪除分區(qū)的實(shí)例代碼,通過實(shí)際操作示例,幫助讀者理解分區(qū)的創(chuàng)建與管理方法,從而更好地優(yōu)化數(shù)據(jù)庫(kù)性能

Mysql分區(qū)創(chuàng)建與刪除

實(shí)例代碼

CREATE PROCEDURE `add_table_partition`() 
	COMMENT '增加表分區(qū)' 
BEGIN
	/******************************************************************
	*	Creator:	    Donne
	*	Create Date:	2019-05-29
	*	Description:	增加所有表的分區(qū),分區(qū)類型為p_date_20190529
                        每月最后一天執(zhí)行,生成下一個(gè)月所有分區(qū)
	******************************************************************/
   DECLARE  v_table_name varchar(50);
   DECLARE  v_par_name varchar(20);
   DECLARE i int DEFAULT 0; 
   DECLARE no_more int DEFAULT 0;
   ##將表名和分區(qū)名放入游標(biāo)
   DECLARE cursor_employee CURSOR FOR
   SELECT table_name,max(partition_name)
	 FROM information_schema.partitions 
	WHERE table_schema='test' and partition_name is not null and partition_name<>'p_date_min'
    GROUP BY table_name;
  DECLARE CONTINUE HANDLER FOR NOT FOUND SET no_more= 1;
  ##打開游標(biāo)
  OPEN cursor_employee;
  FETCH cursor_employee INTO v_table_name,v_par_name;
  ##循環(huán) 1:ture, 0:false,!0:ture,!1:false
  ##select 1 from where !0
  WHILE !no_more DO
      my_loop: LOOP
         ##從當(dāng)前開始
         SET @j:= DATE_ADD(curdate(),INTERVAL i DAY);
         ##下個(gè)月最后一天
         SET @end_date:= last_day(DATE_ADD(last_day(curdate()),INTERVAL 1 DAY));
         IF @j > @end_date THEN           
            LEAVE my_loop;
         END IF;
         #計(jì)數(shù)
         SET i=i+1;
         #分區(qū)使用values less than,所以+1 
         SET @par_value:= UNIX_TIMESTAMP(DATE_ADD(curdate(),INTERVAL i DAY));
         SET @par_name:= concat('p_date_',date_format(@j,'%Y%m%d'));
         #如果新建分區(qū)大于已有分區(qū),則創(chuàng)建
         IF @par_name>v_par_name THEN
             SET @add_par:= concat('ALTER TABLE ',v_table_name,' ADD PARTITION(PARTITION ',@par_name,' VALUES LESS THAN (',@par_value,'));');
             PREPARE stmt from @add_par;
             EXECUTE stmt;
             DEALLOCATE PREPARE stmt;
         END IF;
      END LOOP;
      #重新計(jì)數(shù)
      SET i= 0;
      #從游標(biāo)中取出下一條數(shù)據(jù)
      FETCH cursor_employee INTO v_table_name,v_par_name;
  END WHILE;
  CLOSE cursor_employee;
END 
CREATE PROCEDURE `drop table partition`(
		in start_date date ,
		in end_date date 
) 
	COMMENT '刪除分區(qū)' 
BEGIN
	/******************************************************************
	*	Creator:	    Donne
	*	Create Date:	2019-05-29
	*	Description:	刪除表分區(qū)
	******************************************************************/
   DECLARE  v_table_name varchar(50);
   DECLARE  v_par_name varchar(20);
   DECLARE i int DEFAULT 0; 
   DECLARE no_more int DEFAULT 0;
   ##將表名和分區(qū)名放入游標(biāo)
   DECLARE cursor_employee CURSOR FOR
   SELECT table_name,partition_name
	 FROM information_schema.partitions 
	WHERE table_schema='test' and partition_name is not null and partition_name<>'p_date_min'
      AND partition_name>=concat('p_date_',date_format(end_date,'%Y%m%d'))
      AND partition_name<=concat('p_date_',date_format(end_date,'%Y%m%d'));
  DECLARE CONTINUE HANDLER FOR NOT FOUND SET no_more= 1;
  ##打開游標(biāo)
  OPEN cursor_employee;
  FETCH cursor_employee INTO v_table_name,v_par_name;
  ##循環(huán)
  WHILE !no_more DO
      SET @drop_par:= concat('ALTER TABLE ',v_table_name,' DROP PARTITION ',v_par_name,';');
      PREPARE stmt from @drop_par;
      EXECUTE stmt;
      DEALLOCATE PREPARE stmt;
      FETCH cursor_employee INTO v_table_name,v_par_name;
  END WHILE;
  CLOSE cursor_employee;
END 

總結(jié)

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • MySQL復(fù)制表的三種方式(小結(jié))

    MySQL復(fù)制表的三種方式(小結(jié))

    這篇文章主要介紹了MySQL復(fù)制表的三種方式(小結(jié)),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-09-09
  • 記一次mysql5.7測(cè)試數(shù)據(jù)庫(kù)被刪表的問題

    記一次mysql5.7測(cè)試數(shù)據(jù)庫(kù)被刪表的問題

    這篇文章主要介紹了記一次mysql5.7測(cè)試數(shù)據(jù)庫(kù)被刪表的問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-11-11
  • mysql大數(shù)據(jù)查詢優(yōu)化經(jīng)驗(yàn)分享(推薦)

    mysql大數(shù)據(jù)查詢優(yōu)化經(jīng)驗(yàn)分享(推薦)

    這篇文章主要介紹了mysql大數(shù)據(jù)查詢優(yōu)化經(jīng)驗(yàn)分享,真的是正兒八經(jīng)的mysql優(yōu)化技巧,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下
    2018-03-03
  • Mysql8創(chuàng)建用戶以及賦權(quán)操作過程

    Mysql8創(chuàng)建用戶以及賦權(quán)操作過程

    文章詳細(xì)介紹了MySQL 8中創(chuàng)建用戶、賦權(quán)及權(quán)限管理的操作步驟,包括創(chuàng)建不限制IP的用戶、賦權(quán)數(shù)據(jù)庫(kù)所有表、使用WITH GRANT OPTION傳遞權(quán)限、刷新權(quán)限、撤銷權(quán)限、刪除用戶等,同時(shí)強(qiáng)調(diào)了權(quán)限修改后需刷新及注意權(quán)限繼承關(guān)系
    2025-07-07
  • mysql密碼忘記怎么辦

    mysql密碼忘記怎么辦

    mysql密碼忘記怎么辦?卸載重裝?這篇文章主要為大家詳細(xì)介紹了不卸載也能重新設(shè)置密碼的方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-02-02
  • Mysql binlog日志文件過大的解決

    Mysql binlog日志文件過大的解決

    本文主要介紹了Mysql binlog日志文件過大的解決,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-09-09
  • MySQL數(shù)據(jù)庫(kù)執(zhí)行Update卡死問題的解決方法

    MySQL數(shù)據(jù)庫(kù)執(zhí)行Update卡死問題的解決方法

    最近開發(fā)的時(shí)候debug到一條update的sql語句時(shí)程序就不動(dòng)了,然后我就在plsql上試了一下,發(fā)現(xiàn)plsql一直在顯示正在執(zhí)行,等了好久也不出結(jié)果,下面這篇文章主要給大家介紹了關(guān)于MySQL數(shù)據(jù)庫(kù)執(zhí)行Update卡死問題的解決方法,需要的朋友可以參考下
    2022-05-05
  • Mysql中條件字段有索引,但使用不了索引的幾種場(chǎng)景詳解

    Mysql中條件字段有索引,但使用不了索引的幾種場(chǎng)景詳解

    這篇文章主要介紹了Mysql中條件字段有索引,但使用不了索引的幾種場(chǎng)景,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2025-04-04
  • MySQL兩個(gè)字段模糊匹配操作方案

    MySQL兩個(gè)字段模糊匹配操作方案

    這篇文章主要給大家介紹了關(guān)于MySQL兩個(gè)字段模糊匹配操作的相關(guān)資料,兩張MySQL表進(jìn)行模糊匹配可以使用like語法來實(shí)現(xiàn),文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2023-09-09

最新評(píng)論

中方县| 益阳市| 辽宁省| 临澧县| 舒城县| 进贤县| 朝阳区| 河北省| 天水市| 宁城县| 元朗区| 林州市| 南丰县| 上饶市| 长兴县| 晋州市| 饶河县| 陵水| 成武县| 新绛县| 四子王旗| 德钦县| 丹江口市| 洪湖市| 丰县| 兰西县| 德阳市| 麻江县| 西畴县| 凯里市| 青川县| 磐安县| 泸溪县| 永春县| 阿巴嘎旗| 新化县| 嘉义县| 海南省| 瑞金市| 四川省| 米脂县|