MySQL中的分区表和临时表是啥
发布时间:2022-01-17 11:27:57 所属栏目:MySql教程 来源:互联网
导读:这篇文章主要为大家展示了MySQL中的分区表和临时表是什么,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下MySQL中的分区表和临时表是什么这篇文章吧。 临时表 MySQL中有一种表叫做临时表,指的是用CREATE TEMPORA
副标题[/!--empirenews.page--]
这篇文章主要为大家展示了“MySQL中的分区表和临时表是什么”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“MySQL中的分区表和临时表是什么”这篇文章吧。 临时表 MySQL中有一种表叫做临时表,指的是用CREATE TEMPORARY TABLE语句创建的,它是一种特殊类型的表,它允许存储临时结果,可以在单个会话中多次重复使用,对其他连接是不可见的,当连接中断后,数据表就会丢失,但也可以使用DROP TABLE在不需要它的情况下显式删除。 CREATE TEMPORARY TABLE table_name( column_1_definition, column_2_definition, .... ); 如果想要创建一个与现有表结构相同的临时表,使用CREATE TEMPORARY TABLE语句那就太麻烦了,可以使用下面语句 CREATE TEMPORARY TABLE temp_table_name SELECT * FROM table_name LIMIT 0; 还有一个特点是,临时表可以与其他表具有相同的名称,例如即使数据库中存在user的表,但也可以在数据库中创建user的临时表。 创建临时表示例 创建一个名为tblemployee的新临时表,此时使用SHOW TABLES是无法看到这张表的。 create temporary table tblemployee ( id int auto_increment Primary key, emp_name varchar(500), emp_address varchar(500), emp_dept_id int ) 向其插入数据。 mysql> insert into tblemployee values(1,'张三','北京',2); Query OK, 1 row affected (0.00 sec) mysql> select * from tblemployee; +----+----------+-------------+-------------+ | id | emp_name | emp_address | emp_dept_id | +----+----------+-------------+-------------+ | 1 | 张三 | 北京 | 2 | +----+----------+-------------+-------------+ 1 row in set (0.01 sec) mysql> 基于现有表结构创建 首先创建两个表。 create table tb_user(user_name varchar(255),user_id int(11)); insert tb_user values("张三",1); insert tb_user values("李四",2); insert tb_user values("王五",3); create table balance(user_id int(11),balance decimal(5,2)); insert balance values(1,200); insert balance values(2,150); insert balance values(3,100); 创建一个具有姓名和余额的临时表 create temporary table temp_user_balance select user_name,balance from tb_user left join balance on tb_user.user_id=balance.user_id; 查看临时表中数据。 mysql> select * from temp_user_balance; +-----------+---------+ | user_name | balance | +-----------+---------+ | 张三 | 200.00 | | 李四 | 150.00 | | 王五 | 100.00 | +-----------+---------+ 3 rows in set (0.00 sec) 但是当其他会话查看这个表时,会报错。 mysql> select * from temp_user_balance; ERROR 1146 (42S02): Table 'test.temp_user_balance' doesn't exist mysql> 删除临时表 DROP TEMPORARY TABLE table_name; 分区表 MySQL在5.1的时候开始支持分区功能,分区指的是根据一定规则,把同一张表中不同行的记录分配到不同的物理文件中,每个区都是独立的,可以独立处理,也可以作为表的一部分处理,分区对应用来说是透明的,不会影响业务。 MySQL只支持水平分区,不支持垂直分区,水平分区是将同一张表不同行的记录分配到不同的物理文件中,而垂直分区指将同一张表的不同列记录分配到不同的物理文件中。 可以通过SHOW PLUGINS命令来查看MySQL是否启用了分区功能。 MySQL在创建分区的时候使用partition by语句定义每个分区存放的数据,在查询的时候,优化器会根据分区定义过滤那些没有我们需要数据的分区,这样查询的时候就不用扫描所有分区,提高效率。 分区类型 RANGE分区 他是一种基于一个连续区间范围,把数据分配到不同的分区,是最常用的一种分区类型,下面创建一个以id列区间的分区表。 create table user(id int(11),user_name varchar(255)) partition by range(id)( partition user0 values less than (100), partition user1 values less than (200)); 创建这个表后,表不再由一个ibd组成,而是由建立时候各个分区的ibd组成,可以先通过下面语句查看data目录位置,然后查看被分区后创建的ibd。 show global variables like "%datadir%" +---------------+-----------------+ | Variable_name | Value | +---------------+-----------------+ | datadir | /var/lib/mysql/ | +---------------+-----------------+ 1 row in set (0.00 sec) root@hxl-PC:/var/lib/mysql/test# ls user (编辑:威海站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
站长推荐
热点阅读