mysql临时表用法分析【查询结果可存在临时表中】

让我们从头开始了解一下mysql临时表的用法和使用场景。

什么是临时表?

临时表是一种特殊的表,只在当前会话内存在,一旦会话关闭,临时表就会被自动删除。临时表的优点是:
- 可以提高MySQL实例的并发处理能力;
- 减轻锁竞争,提升查询效率;
- 临时表可以存储查询结果,增加查询灵活性

临时表的创建

在MySQL中,创建临时表分为两种方式:
- 使用CREATE TEMPORARY TABLE语句
- 在SELECT语句中使用SELECT INTO语句

使用CREATE TEMPORARY TABLE语句

CREATE TEMPORARY TABLE tmptable (
  id int(11) NOT NULL AUTO_INCREMENT,
  name varchar(20) DEFAULT NULL,
  age int(11) DEFAULT NULL,
  PRIMARY KEY (id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

使用SELECT INTO语句

此方法的好处是不需要在前面准备好临时表结构。

SELECT * INTO TEMPORARY TABLE tmptable
FROM mytable
WHERE id > 100;

临时表的使用

使用临时表最大的优势在于大量数据的操作处理,可以把查询结果存入一个临时表中,然后根据需要再使用相应的查询语句对结果进行操作。

示例1:查询结果可存在临时表中

以下是查询一张表中的数据,将查询结果存入一个临时表中,并使用临时表的查询结果:

创建临时表

CREATE TEMPORARY TABLE `temp_table` (
  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `name` varchar(255) DEFAULT NULL,
  `age` int(11) DEFAULT NULL,
  PRIMARY KEY (`id`)
)ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin;

将查询结果存入临时表

INSERT INTO `temp_table` (`id`, `name`, `age`)
SELECT * FROM `origin_table`;

使用临时表查询

SELECT `name`, `age` FROM `temp_table` WHERE `age` > 18;

示例2:使用临时表对两张表进行连接查询

以下是使用临时表对两张表进行连接查询的例子:

创建临时表

CREATE TEMPORARY TABLE `temp_table` (
  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `name` varchar(255) DEFAULT NULL,
  `age` int(11) DEFAULT NULL,
  PRIMARY KEY (`id`)
)ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin;

将查询结果存入临时表

INSERT INTO `temp_table` (`id`, `name`, `age`)
SELECT `id`, `name`, `age` FROM `user_table`;

查询临时表数据和另外一张表的数据

SELECT `temp_table`.`name`, `blog_table`.`title` FROM `temp_table`
LEFT JOIN `blog_table` ON `temp_table`.`id` = `blog_table`.`user_id`;

以上两个示例展示了临时表的使用方法,可以看到临时表在高并发的场景下起到了很大的作用。当然,临时表的使用需要满足一定的条件,如操作数量过小,则无法体现其优越性。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:mysql临时表用法分析【查询结果可存在临时表中】 - Python技术站

(0)
上一篇 2023年5月22日
下一篇 2023年5月22日

相关文章

  • Linux系统下导出ORACLE数据库出现Exporting questionable statistics.错误 处理

    当在Linux系统下导出ORACLE数据库时,有时会遇到 “Exporting questionable statistics” 错误。这是由于预估统计信息方面的问题,在导出时数据库无法确认统计信息的准确性,导致出现该错误。针对这种情况,可以使用以下攻略进行处理: 1.使用IGNORE=Y参数忽略错误 在执行expdp命令时,可以使用 IGNORE=Y 参数…

    database 2023年5月22日
    00
  • 通过spring-data-redis操作Redis

    一、操作String类型数据 @RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration(“classpath:spring/applicationContext-redis.xml”) public class RedisStrTest { @Autowired private RedisTe…

    Redis 2023年4月11日
    00
  • MySQL格式化时间date_format

    select date_format(deal_date, ‘%Y年%m月%d日 %H时%i分%s秒’), date_format(deal_date, ‘%Y-%m-%d %H:%i:%s’) from tb_sm_queue_log  

    MySQL 2023年4月13日
    00
  • 数据库常用的sql语句汇总

    数据库是存储数据的大型软件系统,而SQL是可用于访问和管理数据库的语言。因此,掌握SQL语言是数据库开发中非常重要的一环。在本文中,我们将分享一个“数据库常用的SQL语句汇总”攻略,帮助数据库开发者更好地理解SQL语句以及它们在实际工作中的应用。 SQL语句的类型 SQL语句可以分为以下几种类型: DDL(Data Definition Language):…

    database 2023年5月21日
    00
  • mysql进阶知识

    一.存储引擎 引擎 指的是一个系统的核心部分 引擎有不同分类是为了适应不同的使用场景 查看mysql支持所有引擎 show engines; MRG_MYISAM 是一堆MYISAM表的集合 用于做水平分表,如果一个表中数据量太大 将导致效率降低 水平分表就是把整个大表拆成不同的小表,每一次查询 会判断数据在哪一个表中 然后对应去查找 以此来提高效率 nam…

    MySQL 2023年4月16日
    00
  • SQL常用日期查询语句及显示格式设置

    下面就对SQL常用日期查询语句及显示格式设置进行详细讲解。 一、日期格式 在SQL中,日期时间类型有很多种表示方法,包括日期(Date)、时间(Time)、日期时间(DateTime)、时间戳(TimeStamp),不同的数据库支持的日期时间类型也有所不同。在使用SQL中,一般建议按照ISO标准进行日期时间的表示,即yyyy-MM-dd格式表示日期,HH:m…

    database 2023年5月21日
    00
  • MySQL数据库选择题小结

    MySQL数据库选择题小结是一篇针对MySQL数据库知识点的选择题总结。下面我将详细讲解这篇文章的完整攻略,内容将包括文章结构和示例说明等。 结构说明 文章分为多个小节,分别介绍了MySQL数据库的不同知识点。每个小节后面跟有相应的练习题,供读者复习和巩固所学知识。文章的结构如下: 第一部分:概述 介绍MySQL数据库的起源和功能,介绍了MySQL的常见应用…

    database 2023年5月22日
    00
  • MySQL联合查询实现方法详解

    MySQL联合查询实现方法详解 MySQL联合查询是一种利用UNION关键字将多个SELECT语句的结果集合并在一起的查询方式。本文将详细讲解MySQL联合查询的使用方法和注意事项。 语法格式 SELECT column1, column2, … FROM table1 UNION [ALL | DISTINCT] SELECT column1, col…

    database 2023年5月22日
    00
合作推广
合作推广
分享本页
返回顶部