欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

mysql分區(qū)表的增刪改查的實現(xiàn)示例

 更新時間:2024年01月25日 14:56:07   作者:黎陌MLing  
增刪查改在數(shù)據(jù)庫中是很常見的操作,本文主要介紹了mysql分區(qū)表的增刪改查的實現(xiàn)示例,文中通過示例代碼介紹的非常詳細(xì),需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

一、mysql創(chuàng)建表分區(qū)

詳情參考鏈接:mysql創(chuàng)建表分區(qū)詳細(xì)介紹及示例

二、基本分區(qū)信息查詢

官方鏈接 : mysql分區(qū)的相關(guān)增刪改查操作

2.1 查看mysql版本是否支持分區(qū)

mysql> show plugins

即:看名為partition的插件是否為active,active表示支持分區(qū)。

1

并且同一個數(shù)據(jù)庫,不同表支持分區(qū)可以是不同的存儲引擎,但是表分區(qū)后所有的分區(qū)都必須和表使用相同引擎。

MyISAM和InnoDB都支持分區(qū)。
MySQL 8都無需插件即可支持分區(qū),且只有InnoDB支持,MyISAM不支持分區(qū)。
MySQL 5.7 的NDB支持分區(qū)有自己的規(guī)則。
MySQL只支持水平分區(qū),對垂直分區(qū)的支持無計劃。

2.2 查看表是否為分區(qū)表

2.2.1 查詢表分區(qū)信息

  • 查看創(chuàng)建分區(qū)表的create語句show create table 表名;

示例:show create table dev_fac;

3

  • 查看表是不是分區(qū)表:show table status;

示例:show table status;

4

2.2.2 查看表的所有分區(qū)

查看對應(yīng)數(shù)據(jù)庫、對應(yīng)表的所有分區(qū)信息

SELECT
	partition_name part,
	partition_expression expr,
	partition_description descr,
	table_rows
FROM
	INFORMATION_SCHEMA. PARTITIONS
WHERE
	TABLE_SCHEMA = "庫名稱"
AND TABLE_NAME = "表名稱";

示例:

SELECT
	partition_name part,
	partition_expression expr,
	partition_description descr,
	table_rows
FROM
	INFORMATION_SCHEMA. PARTITIONS
WHERE
	TABLE_SCHEMA = "test"
AND TABLE_NAME = "dev_fac";

結(jié)果如下:

2

三、分區(qū)表的查詢操作

MySQL 5.7支持顯式選擇分區(qū)和子分區(qū),在執(zhí)行語句時,應(yīng)檢查是否有與給定WHERE條件匹配的行。分區(qū)選擇與分區(qū)精簡相似,分區(qū)選擇只檢查特定分區(qū)的匹配情況,但在兩個關(guān)鍵方面有所不同:

  • 分區(qū)選擇要檢查的分區(qū)由語句的發(fā)布者指定,而分區(qū)精簡它是自動的。
  • 盡管分區(qū)精簡僅適用于查詢,但查詢和許多DML語句都支持分區(qū)的顯式選擇。
  • 支持顯式分區(qū)選擇的SQL語句如下:
SELECT * FROM 表名  PARTITION (分區(qū)名稱1,分區(qū)名稱2,分區(qū)名稱n) WHERE 查詢條件;

示例:

3

  • 隱式分區(qū)要注意where條件中需要包含分區(qū)的關(guān)鍵字,以確保查詢時是通過分區(qū)查詢,而不是全表掃描,查詢語句如下:
SELECT * FROM 表名  WHERE 查詢條件;

顯示掃描哪些分區(qū),及它們是如何使用的:

在查詢語句前面加上EXPLAIN PARTITIONS 關(guān)鍵字.

示例: EXPLAIN PARTITIONS SELECT * FROM dev_date WHERE Partition_Date = ‘2022-11-25 16:07:00’;

1

四、分區(qū)表的增刪改操作

4.1 新增分區(qū)

4.1.1 給已有的表加上分區(qū)

alter table 表名 partition by 分區(qū)邏輯;

示例:

alter table results partition by RANGE (month(ttime)) (
PARTITION p5 VALUES LESS THAN (6) , 
PARTITION p11 VALUES LESS THAN (12),
PARTITION P12 VALUES LESS THAN MAXVALUE
);

4.1.2 新增分區(qū)

新增分區(qū)需要先確認(rèn)表為分區(qū)表。

alter table 表名 add partition (partition 分區(qū)名稱 values less than (邏輯));

1. range添加新分區(qū)

mysql> alter table user add partition(partition p4 values less than MAXVALUE);

2. list添加新分區(qū)

mysql> alter table list_part add partition(partition p4 values in (25,26,28));

3. hash重新分區(qū)

mysql> alter table hash_part add partition partitions 4;

4.key重新分區(qū)

mysql> alter table key_part add partition partitions 4;

4.2 重新分區(qū)

1. range重新分區(qū)

mysql> ALTER TABLE user REORGANIZE PARTITION p0,p1,p2,p3,p4 INTO (PARTITION p0 VALUES LESS THAN MAXVALUE);

2. list重新分區(qū)

mysql> ALTER TABLE list_part REORGANIZE PARTITION p0,p1,p2,p3,p4 INTO (PARTITION p0 VALUES in (1,2,3,4,5));

3. hash和key分區(qū)不能用REORGANIZE,官方網(wǎng)站說的很清楚

mysql> ALTER TABLE key_part REORGANIZE PARTITION COALESCE PARTITION 9;

ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ‘PARTITION 9’ at line 1

4.3 刪除

4.3.1 刪除表

表刪除,對應(yīng)的分區(qū)及數(shù)據(jù)也會刪除。

DROP TABLE 表名稱`;

4.3.2 刪除分區(qū)

alter table 表名  drop partition 分區(qū)名稱;
-- 示例
alter table staff  drop partition p0;

如果你使用例子給出的分區(qū)方案,你只需執(zhí)行語句alter table staff drop partition p0來刪除所有在1991年前就已經(jīng)停止工作的雇員相對應(yīng)的所有行。對于有大量行的表,這比運行一個如”delete from staff WHERE year(separated) <= 1990;”這樣的一個DELETE查詢要有效得多。

4.3.4 刪除指定分區(qū)中的數(shù)據(jù)

DELETE
FROM
	表名  PARTITION  (分區(qū)名稱1,分區(qū)名稱2,分區(qū)名稱n)
WHERE 子句

示例:DELETE FROM dev_fac PARTITION(p1000000000000001) WHERE devName = ‘D10000000000000011名稱’

5

4.4 數(shù)據(jù)插入

4.4.1 按表插入

直接按表插入,數(shù)據(jù)庫自動根據(jù)數(shù)據(jù)查找分區(qū)插入。

INSERT INTO `dev_fac`
VALUES
	(
		'D10000000000000010',
		'D10000000000000010名稱',
		'F1000000000000001',
		'2022-11-25 16:07:00',
		'1',
		'1669363620000',
		'1',
		'1000000000000001',
		'2022-11-25 16:07:00'
	);

4.4.2 按分區(qū)插入

插入語句中指定插入的分區(qū)信息。

INSERT INTO 表名  PARTITION  (分區(qū)名稱1,分區(qū)名稱2,分區(qū)名稱n)
列名  VALUES()

示例:

INSERT INTO dev_fac PARTITION (1000000000000001)
VALUES(
‘D10000000000000012',
‘D10000000000000012名稱',
‘F1000000000000001',
‘2022-11-25 16:07:00',
‘1',
‘1669363620000',
‘1',
‘1000000000000001',
‘2022-11-25 16:07:00'
);

4.4.2 按分區(qū)批量插入

插入語句中指定插入的分區(qū)信息且一次插入多條數(shù)據(jù)。

INSERT INTO 表名  PARTITION  (分區(qū)名稱1,分區(qū)名稱2,分區(qū)名稱n)
列名  VALUES(),(),(),...,()

示例:

INSERT INTO `dev_fac` PARTITION (p1000000000000001)
VALUES(
		'D10000000000000012',
		'D10000000000000012名稱',
		'F1000000000000001',
		'2022-11-25 16:07:00',
		'1',
		'1669363620000',
		'1',
		'1000000000000001',
		'2022-11-25 17:07:00'
	),
	(
		'D10000000000000013',
		'D10000000000000013名稱',
		'F1000000000000001',
		'2022-11-25 16:07:00',
		'1',
		'1669363620000',
		'1',
		'1000000000000001',
		'2022-11-25 17:07:00'
	);

到此這篇關(guān)于mysql分區(qū)表的增刪改查的實現(xiàn)示例的文章就介紹到這了,更多相關(guān)mysql分區(qū)表增刪改查內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家! 

相關(guān)文章

  • Linux下MySQL卸載和安裝圖文教程

    Linux下MySQL卸載和安裝圖文教程

    這篇文章主要為大家詳細(xì)介紹了Linux下MySQL卸載和安裝圖文教程,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-11-11
  • MySQL slave_net_timeout參數(shù)解決的一個集群問題案例

    MySQL slave_net_timeout參數(shù)解決的一個集群問題案例

    這篇文章主要介紹了MySQL slave_net_timeout參數(shù)解決的一個集群問題案例,問題日志請見正文,本文使用slave_net_timeout參數(shù)解決了這個問題,需要的朋友可以參考下
    2015-05-05
  • MySQL UPDATE 語句一個“經(jīng)典”的坑

    MySQL UPDATE 語句一個“經(jīng)典”的坑

    這篇文章主要介紹了MySQL UPDATE 語句一個“經(jīng)典”的坑,一個非常有意思的話題,感興趣的小伙伴可以參考下面文章的具體內(nèi)容哦
    2021-10-10
  • MySQL?varchar(n)能存儲幾個漢字

    MySQL?varchar(n)能存儲幾個漢字

    這篇文章主要介紹了MySQL varchar(n)能存儲幾個漢字,MySQL中varchar(n)表示n個字符,無論漢字和英文,Mysql都能存入n個字符,僅是實際字節(jié)長度有所區(qū)別,本文給大家介紹的非常詳細(xì),需要的朋友可以參考下
    2023-05-05
  • MySQL數(shù)據(jù)庫中表的查詢實例(單表和多表)

    MySQL數(shù)據(jù)庫中表的查詢實例(單表和多表)

    查詢數(shù)據(jù)是數(shù)據(jù)庫操作中最常用,也是最重要的操作,下面這篇文章主要介紹了MySQL數(shù)據(jù)庫中表的查詢的相關(guān)資料,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2025-03-03
  • 驗證Mysql中聯(lián)合索引的最左匹配原則詳情

    驗證Mysql中聯(lián)合索引的最左匹配原則詳情

    這篇文章主要介紹了驗證Mysql中聯(lián)合索引的最左匹配原則詳情,文章圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價值,需要的小伙伴可以參考一下
    2022-08-08
  • 一鍵搭建MYSQL主從,輕松應(yīng)對數(shù)據(jù)備份與恢復(fù)

    一鍵搭建MYSQL主從,輕松應(yīng)對數(shù)據(jù)備份與恢復(fù)

    MYSQL主從是一種常見的數(shù)據(jù)庫架構(gòu),它可以提高數(shù)據(jù)庫的可用性和性能,在主從架構(gòu)中,主數(shù)據(jù)庫負(fù)責(zé)處理寫操作,而從數(shù)據(jù)庫負(fù)責(zé)處理讀操作,當(dāng)主數(shù)據(jù)庫發(fā)生故障時,從數(shù)據(jù)庫可以接管并繼續(xù)提供服務(wù),從而實現(xiàn)高可用性,需要的朋友可以參考下
    2023-10-10
  • CMS不要讓MySQL為你流淚

    CMS不要讓MySQL為你流淚

    MySQL是中小型網(wǎng)站普遍使用的數(shù)據(jù)庫之一,然而,很多人并不清楚MySQL到底能支持多大的數(shù)據(jù)量,再加上某些國內(nèi)CMS廠商把數(shù)據(jù)承載量的責(zé)任推給它,導(dǎo)致很多不了解MySQL的站長對它產(chǎn)生了很多誤解
    2008-12-12
  • MySQL死鎖解析與解決方法

    MySQL死鎖解析與解決方法

    在數(shù)據(jù)庫管理中,死鎖是一種常見而又棘手的問題,當(dāng)多個事務(wù)相互等待對方釋放鎖資源時,死鎖就會發(fā)生,本文將介紹MySQL中死鎖產(chǎn)生的原因、如何查詢死鎖,以及解決死鎖的方法,需要的朋友可以參考下
    2024-01-01
  • mysql下普通索引和唯一索引的效率對比

    mysql下普通索引和唯一索引的效率對比

    昨天有位同事說,他的網(wǎng)頁查詢過程中發(fā)現(xiàn)普通索引和唯一索引的效率是有差別的,普通索引比唯一索引快
    2010-12-12

最新評論