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

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

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

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

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

二、基本分區(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ū)

查看對應數(shù)據(jù)庫、對應表的所有分區(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í)行語句時,應檢查是否有與給定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ū)需要先確認表為分區(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 刪除表

表刪除,對應的分區(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)停止工作的雇員相對應的所有行。對于有大量行的表,這比運行一個如”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)文章

  • 詳解MySQL中的字符集和排序規(guī)則

    詳解MySQL中的字符集和排序規(guī)則

    MySQL字符集用于定義數(shù)據(jù)庫中存儲的文本數(shù)據(jù)的編碼格式,而排序規(guī)則則用于確定如何對文本數(shù)據(jù)進行排序和比較,本文將給大家講講MySQL中的字符集和排序規(guī)則,需要的朋友可以參考下
    2023-09-09
  • 最新評論

    南丰县| 南部县| 滦平县| 江源县| 泾源县| 班戈县| 涿州市| 广宗县| 抚宁县| 文成县| 盐津县| 博兴县| 白银市| 大荔县| 景泰县| 怀集县| 贵定县| 桂林市| 呼伦贝尔市| 文登市| 祁东县| 忻城县| 十堰市| 博客| 香港| 尼勒克县| 九龙坡区| 天峻县| 淅川县| 盘山县| 铁岭市| 金塔县| 桦川县| 阳曲县| 湾仔区| 铁力市| 黑河市| 崇阳县| 永城市| 新龙县| 小金县|