iis服务器助手广告广告
返回顶部
首页 > 资讯 > 数据库 >MySQL查询优化临时表
  • 645
分享到

MySQL查询优化临时表

MySQL查询优化临时表 2019-09-24 14:09:54 645人浏览 绘本
摘要

【理论分析】 Mysql在执行sql查询时可能会用到临时表,一般情况下,用到临时表就意味着性能较低。 临时表存储 mysql临时表分为“内存临时表”和“磁盘临时表”,其中内存临时表使用MySQL的MEMORY存储引擎,磁盘临时表使用MySQ

【理论分析】

Mysql在执行sql查询时可能会用到临时表,一般情况下,用到临时表就意味着性能较低。

临时表存储

mysql临时表分为“内存临时表”和“磁盘临时表”,其中内存临时表使用MySQL的MEMORY存储引擎,磁盘临时表使用MySQL的MyISAM存储引擎; 一般情况下,MySQL会先创建内存临时表,但内存临时表超过配置指定的值后,MySQL会将内存临时表导出到磁盘临时表; linux平台上缺省是/tmp目录,/tmp目录小的系统要注意啦。

使用临时表的场景

1)ORDER BY子句和GROUP BY子句不同, 例如:ORDERY BY price GROUP BY name;

2)在JOIN查询中,ORDER BY或者GROUP BY使用了不是第一个表的列 例如:SELECT * from TableA, TableB ORDER BY TableA.price GROUP by TableB.name

3)ORDER BY中使用了DISTINCT关键字 ORDERY BY DISTINCT(price)

4)SELECT语句中指定了SQL_SMALL_RESULT关键字 SQL_SMALL_RESULT的意思就是告诉MySQL,结果会很小,请直接使用内存临时表,不需要使用索引排序 SQL_SMALL_RESULT必须和GROUP BY、DISTINCT或DISTINCTROW一起使用 一般情况下,我们没有必要使用这个选项,让MySQL服务器选择即可。

直接使用磁盘临时表的场景

1)表包含TEXT或者BLOB列;

2)GROUP BY 或者 DISTINCT 子句中包含长度大于512字节的列;

3)使用UNION或者UNioN ALL时,SELECT子句中包含大于512字节的列;

临时表相关配置

tmp_table_size:指定系统创建的内存临时表最大大小;Http://dev.mysql.com/doc/refman/5.1/en/server-system-variables.html#sysvar_tmp_table_size

max_heap_table_size: 指定用户创建的内存表的最大大小;http://dev.mysql.com/doc/refman/5.1/en/server-system-variables.html#sysvar_max_heap_table_size

注意:最终的系统创建的内存临时表大小是取上述两个配置值的最小值。

表的设计原则

使用临时表一般都意味着性能比较低,特别是使用磁盘临时表,性能更慢,因此我们在实际应用中应该尽量避免临时表的使用。 常见的避免临时表的方法有:

1)创建索引:在ORDER BY或者GROUP BY的列上创建索引;

2)分拆很长的列:一般情况下,TEXT、BLOB,大于512字节的字符串,基本上都是为了显示信息,而不会用于查询条件, 因此表设计的时候,应该将这些列独立到另外一张表。

SQL优化

如果表的设计已经确定,修改比较困难,那么也可以通过优化SQL语句来减少临时表的大小,以提升SQL执行效率。

常见的优化SQL语句方法如下:

1. 拆分SQL语句

临时表主要是用于排序和分组,很多业务都是要求排序后再取出详细的分页数据,这种情况下可以将排序和取出详细数据拆分成不同的SQL,以降低排序或分组时临时表的大小,提升排序和分组的效率,我们的案例就是采用这种方法。

2. 优化业务,去掉排序分组等操作

有时候业务其实并不需要排序或分组,仅仅是为了好看或者阅读方便而进行了排序,例如数据导出、数据查询等操作,这种情况下去掉排序和分组对业务也没有多大影响。

如何判断使用了临时表? 使用explain查看执行计划,Extra列看到Using temporary就意味着使用了临时表。

您可能感兴趣的文档:

--结束END--

本文标题: MySQL查询优化临时表

本文链接: https://www.lsjlt.com/news/2491.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • MySQL查询优化临时表
    【理论分析】 MySQL在执行SQL查询时可能会用到临时表,一般情况下,用到临时表就意味着性能较低。 临时表存储 MySQL临时表分为“内存临时表”和“磁盘临时表”,其中内存临时表使用MySQL的MEMORY存储引擎,磁盘临时表使用MySQ...
    99+
    2019-09-24
    MySQL查询优化临时表
  • mysql如何查询临时表
    这篇文章主要讲解了“mysql如何查询临时表”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“mysql如何查询临时表”吧! 本教程...
    99+
    2022-10-19
  • oracle优化--表优化(临时表)
    一、创建临时表与普通表 SQL> CREATE GLOBAL TEMPORARY TABLE TMP_TEST ON COMMIT PRESERVE ROWS AS SELECT ...
    99+
    2022-10-18
  • mysql怎么将查询结果放入临时表
    在MySQL中,你可以使用`CREATE TEMPORARY TABLE`语句创建一个临时表,并将查询结果插入到该临时表中。 以下是...
    99+
    2023-10-27
    mysql
  • MySQL临时表
    外部临时表是通过语句create temporary table...创建的临时表,临时表只在本会话有效,会话断开后,临时表数据会自动清理。 内部临时表主要有两类,一类是information_schema中临时表,另一类是会话执行查询时...
    99+
    2019-07-13
    MySQL临时表
  • MySQL 临时表的原理以及优化方法
    目录1 临时表2 union临时表优化3 group by临时表优化1 临时表 sort buffer、内存临时表和join buffer,这三个数据结构都是用来存放语句执行过程中的中间数据,以辅助SQL语句的...
    99+
    2022-08-22
    MySQL 临时表优化 MySQL 临时表
  • MySQL45讲之随机查询和临时表 - flowers
    本文介绍 MySQL 随机查询的工作流程、优化随机查询的方式、和临时表。 前言 本文介绍 MySQL 随机查询的工作流程、优化随机查询的方式、和临时表。 工作流程 根据下表结构建立 words...
    99+
    2021-03-30
    MySQL45讲之随机查询和临时表 - flowers
  • oracle查询临时表空间使用情况
    select h.tablespace_name tablespace_name,f.autoextensible,               round(sum(nvl(p.bytes_use...
    99+
    2022-10-18
  • Oracle 12CR2查询转换之临时表转换
    在12CR2中出现一种新的查询转换技术临时表转换, 在下面的例子中,数据库对customers表上的子查询结果物化到一个临时表中: SQL> show parameter&n...
    99+
    2022-10-18
  • mysql优化——查询优化
    这一篇mysql优化是注重于查询优化,根据mysql的执行情况,判断mysql什么时候需要优化,关于数据库开始阶段的数据库逻辑、物理结构的设计结构优化不是本文重点,下次再谈。 查看mysql语句的执行情况,判断是否需要进行优化 ...
    99+
    2016-09-05
    mysql优化——查询优化
  • oracle 表空间,临时表空间使用率查询
    临时表空间: SELECT a.tablespace_name, a.BYTES total, a.bytes - nvl(b.bytes, 0) free      ...
    99+
    2022-10-18
  • MySQL之临时表
    写在前面 本文一起看下MySQL的临时表。 1:什么是临时表 通过create temporary table t语句创建的表,就是临时表,临时表的临时体现在其生命周期是和会话一样的,当会话结束,即连接关闭时MySQL会自动将创建的临时表执...
    99+
    2023-08-17
    mysql 临时表 内存表 temporary table
  • MYSQL & DB2临时表
    MySQL 建立临时表 CREATE TEMPORARY TABLE 创建临时表 临时表只在当前连接可见,当关闭连接时,MySQL会自动删除表并释放所有空间 如果链接到MySQL使用持久性连接,那么只...
    99+
    2023-10-06
    mysql 数据库
  • mysql查询优化
    select * from a where id in (select id from b) 等价于: for select id from b for select 8 from...
    99+
    2022-02-02
    mysql查询优化
  • MySQL 查询优化
    查询优化常用策略  1、优化数据访问:应用程序应该减少对数据库的数据访问,数据库应该减少实际扫描的记录数     例如,Redis缓存,避免"selec&#...
    99+
    2022-10-18
  • mysql按时间查询优化的方法
    小编给大家分享一下mysql按时间查询优化的方法,希望大家阅读完这篇文章后大所收获,下面让我们一起去探讨吧!mysql按时间查询优化的方法:1、【register_time】字段是datetime类型,转换...
    99+
    2022-10-18
  • oracle查询建立临时表的方法是什么
    Oracle可以使用CREATE GLOBAL TEMPORARY TABLE语句来建立临时表。临时表的数据在会话结束时会自动被删除...
    99+
    2023-08-23
    oracle
  • MySQL怎么建临时表
    在MySQL中,可以使用CREATE TEMPORARY TABLE语句来创建临时表。 临时表是一种只在当前会话有效的表,它的数据仅...
    99+
    2023-10-27
    MySQL
  • 如何优化MySQL查询
    这篇文章给大家介绍如何优化MySQL查询,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。解析器和预处理器一开始,MySQL 的解析器将查询语句拆分成一系列指令并从中构建一棵“解析树”。解析器使用 MySQL 的SQL 语...
    99+
    2023-06-15
  • mysql in慢查询优化
    目录记一次mysql慢查询优化——生产环境待办列表现场演示5~6s才加载出来结果;顿时,产品经理的脸挂不住了,作为多年经验的老开发,心想完犊子,脸啪啪滴。 不过,秉着多年的江湖经验,遇事不慌,拍个...
    99+
    2023-05-12
    mysql in慢查询优化 mysql in慢查询优化
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作