我的编程空间,编程开发者的网络收藏夹
学习永远不晚

MySQL5.7查询性能改进

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

MySQL5.7查询性能改进

1.子查询

1.1 MySQL5.5
mysql> explain extended select id,k,c,pad from sbtest1 where id in (select id from sbtest1 where k in ('50385','50011','43490','504922'));
+----+--------------------+---------+-----------------+---------------+---------+---------+------+--------+----------+-------------+
| id | select_type        | table   | type            | possible_keys | key     | key_len | ref  | rows   | filtered | Extra       |
+----+--------------------+---------+-----------------+---------------+---------+---------+------+--------+----------+-------------+
|  1 | PRIMARY            | sbtest1 | ALL             | NULL          | NULL    | NULL    | NULL | 612555 |   100.00 | Using where |
|  2 | DEPENDENT SUBQUERY | sbtest1 | unique_subquery | PRIMARY,k_1   | PRIMARY | 4       | func |      1 |   100.00 | Using where |
+----+--------------------+---------+-----------------+---------------+---------+---------+------+--------+----------+-------------+
2 rows in set, 1 warning (0.00 sec)
1.2 MySQL5.7
mysql> explain select id,k,c,pad from sbtest1 where id in (select id from sbtest1 where k in ('50385','50011','43490','50492'));
+----+-------------+---------+------------+--------+---------------+---------+---------+-------------------+------+----------+--------------------------+
| id | select_type | table   | partitions | type   | possible_keys | key     | key_len | ref               | rows | filtered | Extra                    |
+----+-------------+---------+------------+--------+---------------+---------+---------+-------------------+------+----------+--------------------------+
|  1 | SIMPLE      | sbtest1 | NULL       | range  | PRIMARY,k_1   | k_1     | 4       | NULL              |  253 |   100.00 | Using where; Using index |
|  1 | SIMPLE      | sbtest1 | NULL       | eq_ref | PRIMARY       | PRIMARY | 4       | sbtest.sbtest1.id |    1 |   100.00 | NULL                     |
+----+-------------+---------+------------+--------+---------------+---------+---------+-------------------+------+----------+--------------------------+
2 rows in set, 1 warning (0.00 sec)

2.union all

2.1 MySQL5.5,会将结果存在临时表中
mysql> explain (select k from sbtest1 order by k) union all (select k from sbtest2 order by k);
+----+--------------+------------+-------+---------------+------+---------+------+--------+-------------+
| id | select_type  | table      | type  | possible_keys | key  | key_len | ref  | rows   | Extra       |
+----+--------------+------------+-------+---------------+------+---------+------+--------+-------------+
|  1 | PRIMARY      | sbtest1    | index | NULL          | k_1  | 4       | NULL | 612555 | Using index |
|  2 | UNION        | sbtest2    | index | NULL          | k_2  | 4       | NULL | 615365 | Using index |
| NULL | UNION RESULT | <union1,2> | ALL   | NULL          | NULL | NULL    | NULL |   NULL |             |
+----+--------------+------------+-------+---------------+------+---------+------+--------+-------------+
3 rows in set (0.00 sec)
2.2 MySQL5.7,直接展示结果
mysql> explain (select k from sbtest1 order by k) union all (select k from sbtest2 order by k);
+----+-------------+---------+------------+-------+---------------+------+---------+------+--------+----------+-------------+
| id | select_type | table   | partitions | type  | possible_keys | key  | key_len | ref  | rows   | filtered | Extra       |
+----+-------------+---------+------------+-------+---------------+------+---------+------+--------+----------+-------------+
|  1 | PRIMARY     | sbtest1 | NULL       | index | NULL          | k_1  | 4       | NULL | 597600 |   100.00 | Using index |
|  2 | UNION       | sbtest2 | NULL       | index | NULL          | k_2  | 4       | NULL | 597744 |   100.00 | Using index |
+----+-------------+---------+------------+-------+---------------+------+---------+------+--------+----------+-------------+
2 rows in set, 1 warning (0.00 sec)

3 in查询

3.1 MySQL5.5
mysql> explain select * from sbtest1 where (k,pad) in ((43490,'24909597713-10795827686-60824686337-78820064088-50914299985'),(50088,'56702105543-74313438035-88959810983-96828764563-29757615888'));
+----+-------------+---------+------+---------------+------+---------+------+--------+-------------+
| id | select_type | table   | type | possible_keys | key  | key_len | ref  | rows   | Extra       |
+----+-------------+---------+------+---------------+------+---------+------+--------+-------------+
|  1 | SIMPLE      | sbtest1 | ALL  | NULL          | NULL | NULL    | NULL | 612555 | Using where |
+----+-------------+---------+------+---------------+------+---------+------+--------+-------------+
1 row in set (0.00 sec)
3.2 MySQL5.7
mysql> explain select * from sbtest1 where (k,pad) in ((43490,'24909597713-10795827686-60824686337-78820064088-50914299985'),(50088,'56702105543-74313438035-88959810983-96828764563-29757615888'));
+----+-------------+---------+------------+-------+---------------+------+---------+------+------+----------+-------------+
| id | select_type | table   | partitions | type  | possible_keys | key  | key_len | ref  | rows | filtered | Extra       |
+----+-------------+---------+------------+-------+---------------+------+---------+------+------+----------+-------------+
|  1 | SIMPLE      | sbtest1 | NULL       | range | k_1           | k_1  | 4       | NULL |   77 |    20.00 | Using where |
+----+-------------+---------+------------+-------+---------------+------+---------+------+------+----------+-------------+
1 row in set, 1 warning (0.00 sec)

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

MySQL5.7查询性能改进

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

下载Word文档

猜你喜欢

nodejs 8.11性能改进

随着Node.js的快速发展和广泛应用,以及对更高效性能的压力,Node.js 8.11发布了一些重大的性能改进。这些改进涵盖了语言本身的改进、V8引擎的改进以及其它方面的改进。在此篇文章中,我们将深入探讨这些性能改进的具体内容。1. 新的JavaScript标准支持Node.js 8.11加入了支持ES2017中所有新特性的V8引擎版本 —— V8 6.1。这意味着在Node
2023-05-14

mysql-查询性能优化

1、不要取出全部列,取出全部列,会让优化器无法完成索引覆盖扫描这类优化,还会为服务器带来额外的I/O、内存和CPU的消耗。应该严格禁止SELECT * 的写法。MySQL使用如下三种方式应用WHERE条件,从好到坏依次为:  1.1 在索引中使用WHERE条件
mysql-查询性能优化
2021-02-18

MariaDB中如何进行查询优化和性能调整

要在MariaDB中进行查询优化和性能调整,可以采取以下几种方法:使用合适的索引:通过为经常查询的字段添加索引,可以加快查询速度。确保索引的选择是最优的,避免创建过多或不必要的索引。使用EXPLAIN语句:使用EXPLAIN语句可以帮助分
MariaDB中如何进行查询优化和性能调整
2024-04-09

PostgreSQL中怎么进行性能调优和查询优化

在 PostgreSQL 中进行性能调优和查询优化可以通过以下几种方式来实现:使用合适的索引:创建索引可以加速查询操作,尤其是对于经常被查询的字段。在选择需要创建索引的字段时,可以考虑使用 WHERE 子句中经常被用到的字段以及 JOIN
PostgreSQL中怎么进行性能调优和查询优化
2024-03-12

mysql 多表关联查询如何改进

mysql 多表关联查询怎么优化好呢 🚨 使用正确的连接类型优化 WHERE 子句为关联字段创建索引减少查询的字段考虑使用分布式查询尽量避免子查询优化连接顺序利用 EXPLAIN 分析查询分解复杂查询使用视图或存储过
2023-08-28

ClickHouse的查询性能优势

本文介绍ClickHouse的查询性能优势。
查询计算2024-11-30

SQL Server性能相关查询

1、查询SQL Server执行过的SQL语句(执行次数)有的时候,需要知道近段时间SQLSERVER执行了什么语句,可以用下面的方法:SELECT ss.SUM_execution_count , t.text , ss.SUM_total_elapsed_
SQL Server性能相关查询
2015-04-03

五个提升SQL语句性能的小窍门,进一步提升查询性能

在进行数据库操作时,优化SQL语句是提升性能和效率的关键步骤之一。无论是处理大规模数据还是简单的查询,优化SQL语句都可以明显改善系统的响应时间和资源利用率。
SQL语句性能2024-11-30

MySQL 如何分析查询性能

查询优化、索引优化和表设计优化是环环相扣的。如果你有丰富的编写MySQL查询语句的经验,你就会知道如何设计表和索引来支持有效的查询。同样的,知晓表设计同样有助于了解表结构如何对查询语句产生影响。因此,即便表设计和索引都设计得很好,但如果查询
2022-05-12

PHP8.2将有哪些改动(性能改进、新特性)!

目前PHP8.2的发布时间还没有确定,但是预计将在2022年末发布。这篇文章将为你介绍在新版本中的功能、性能改进、弃用的特性等。相关推荐:PHP8.2最新进展,即将进行新特性冻结!null和false将作为独立的类型PHP并不会陷入到完美的类型安全方向中,但是从技术的角度考虑,将null和false作为独立的数据类型是值得的。一般情况下,PHP的很多常见的函数,会通过返回false表示出错了。比如在
2022-07-04

Java 中 BigDecimal 比较能否进行范围查询?(Java BigDecimal比较能否进行范围查询)

在Java编程中,BigDecimal是用于高精度十进制计算的类。当涉及到比较BigDecimal数值并判断是否在某个范围内时,这是一个常见的需求,但同时也可能会带来一些挑战。BigDecimal类提供了多种比较方法,如compareTo()方法,用于比较两个
Java 中 BigDecimal 比较能否进行范围查询?(Java BigDecimal比较能否进行范围查询)
Java2024-12-20

MySQL高性能索引策略和查询性能优化

前缀索引和索引选择性有时候需要索引很长的字符,这会让索引变得大且慢。一个策略是模拟哈希索引。通常可以索引开始的部分字符,这样可以大大解约索引空间,提高索引效率。但这样会降低索引的选择性。索引的选择性:不重复的索引值(也成为基数)和数据表的记录总数比值。索引的选
MySQL高性能索引策略和查询性能优化
2017-05-17

SQLServer中如何优化查询性能

SQLServer中优化查询性能通常包括以下几个方面的方法:创建合适的索引:通过在查询经常用到的列上创建索引,可以加快查询速度。索引可以减少数据库的扫描次数,从而提高查询效率。优化查询语句:避免使用不必要的查询语句,减少查询中的冗余字段和条
SQLServer中如何优化查询性能
2024-04-09

Impala中如何优化查询性能

在Impala中优化查询性能的一些方法包括:数据分区:将数据按照某个字段进行分区,可以减少查询时的数据扫描范围,提高查询性能。数据压缩:对数据进行压缩可以减少数据在磁盘上的存储空间,减少IO操作,提高查询性能。数据缓存:可以使用Impala
Impala中如何优化查询性能
2024-03-06

编程热搜

目录