zoukankan      html  css  js  c++  java
  • MySQL系列:性能优化

    1. 优化简介

      MySQL性能优化包括:查询优化、数据库结构优化、MySQL服务器优化等。

    2. 查询优化

    2.1 分析查询语句

      MySQL提供EXPLAIN和DESCRIBE,用来分析查询语句。

      EXPLAIN语句的基本语法:

    EXPLAIN [EXTENDED] SELECT select_options

      其中,EXTENDED用于EXPLAIN产生附加信息,select_options是SELECT语句的查询选项,包括FROM WHERE子句等。

    mysql> EXPLAIN SELECT * FROM product;
    +----+-------------+---------+------------+------+---------------+------+---------+------+------+----------+-------+
    | id | select_type | table   | partitions | type | possible_keys | key  | key_len | ref  | rows | filtered | Extra |
    +----+-------------+---------+------------+------+---------------+------+---------+------+------+----------+-------+
    |  1 | SIMPLE      | product | NULL       | ALL  | NULL          | NULL | NULL    | NULL |    1 |   100.00 | NULL  |
    +----+-------------+---------+------------+------+---------------+------+---------+------+------+----------+-------+

      其中,

        id:SELECT识别符,SELECT的查询序列号。

        select_type:SELECT语句的类型。

          取值包括:

          (1)SIMPLE:简单查询,不包括连接查询和子查询

          (2)PRIMARY:主查询,或最外层的查询语句

          (3)UNION:连接查询的第2个或后面的查询语句

          (4)DEPENDENT UNION:连接查询中的第2个或后面的SELECT语句,取决于外面的查询

          (5)UNION RESULT:连接查询的结果

          (6)SUBQUERY:子查询中的第1个SELECT语句

          (7)DEPENDENT SUBQUERY:子查询中的第1个SELECT,取决于外面的查询

          (8)DERIVED:导出表的SELECT(FROM子句的子查询)

        table:查询的表

        type:表的连接类型

          表的连接类型从最佳到最差顺序:

          (1)system:该表是仅有一行的系统表,是const连接类型的一个特例。

          (2)const:数据表最多只有一个匹配行,const表查询速度很快,因为只读取一次。

                const用于使用常量值比较PRIMARY KEY或UNIQUE索引场合。

    mysql> EXPLAIN SELECT * FROM product WHERE id = 1;
    +----+-------------+---------+------------+-------+---------------+---------+---------+-------+------+----------+-------+
    | id | select_type | table   | partitions | type  | possible_keys | key     | key_len | ref   | rows | filtered | Extra |
    +----+-------------+---------+------------+-------+---------------+---------+---------+-------+------+----------+-------+
    |  1 | SIMPLE      | product | NULL       | const | PRIMARY       | PRIMARY | 4       | const |    1 |      100 | NULL  |
    +----+-------------+---------+------------+-------+---------------+---------+---------+-------+------+----------+-------+

          (3)eq_ref:用在一个索引的所有部分被连接使用并且索引是UNIQUE或PRIMARY KEY。

                eq_ref可以用于使用"="操作符比较带索引的列。比较值为常量或一个在该表前面所读取的列的表达式。

    mysql> EXPLAIN SELECT
        -> product.*
        -> FROM
        -> product
        -> INNER JOIN category ON product.category_id = category.id;
    +----+-------------+-----------+------------+--------+---------------+---------+---------+------------------------+------+----------+-------------+
    | id | select_type | table     | partitions | type   | possible_keys | key     | key_len | ref                    | rows | filtered | Extra       |
    +----+-------------+-----------+------------+--------+---------------+---------+---------+------------------------+------+----------+-------------+
    |  1 | SIMPLE      | product   | NULL       | ALL    | NULL          | NULL    | NULL    | NULL                   |  118 |      100 | Using where |
    |  1 | SIMPLE      | category  | NULL       | eq_ref | PRIMARY       | PRIMARY | 4       | db.product.category_id |    1 |      100 | Using index |
    +----+-------------+-----------+------------+--------+---------------+---------+---------+------------------------+------+----------+-------------+
  • 相关阅读:
    linux配置静态ip
    hadoop伪分布式搭建
    flume安装
    远程shell脚本执行工具类
    NextCloud 修改数据存储位置(以CentOS 8(apache)为例)
    CP2K入门教程转载分享
    Origin 2019b 合法获取与使用介绍——正版软件&最新最实用教程分享 (Origin下载)
    Internet Download Manager:IDM 6.3.29破解版——最快的下载工具
    关于通过IPv6地址远程登录服务器的操作说明
    安装python的第一个曲折
  • 原文地址:https://www.cnblogs.com/libingql/p/8669150.html
Copyright © 2011-2022 走看看