zoukankan      html  css  js  c++  java
  • SQL 执行计划

    定义:

    使用EXPLAIN关键字可以模拟优化器执行SQL查询语句,从而知道MySQL是如何处理你的SQL语句的。分析你的查询语句或是表结构的性能瓶颈

    执行计划的作用:

    l 表的读取顺序
    
    l 数据读取操作的操作类型
    
    l 哪些索引可以使用
    
    l 哪些索引被实际使用
    
    l 表之间的引用
    
    l 每张表有多少行被优化器查询

    语法:

    explian + sql 语句

    explain 
    select * from student;
    

    列的意义:
    1) id 列:

    描述select查询的序列号,包含一组数字,表示查询中执行select子句或操作表的顺序

    id相同:执行顺序由上至下
    id不同:如果是子查询,id的序号会递增,id值越大优先级越高,越先被执行
    id相同不同:同时存在
    

    举例:

    -- id 相同的 从上至下 依次进行
    EXPLAIN
    select * from sc , student, course where sc.s_id = student.sid and course.cid = sc.c_id
    

    -- id 完全不同的 id越大越先被执行
    EXPLAIN 
    SELECT
    	* 
    FROM
    	student 
    WHERE
    	sid = ( SELECT s_id FROM sc WHERE score > 60 AND c_id = ( SELECT cid FROM course WHERE cid > 2 ) )
    

    -- id 有相同也有不相同的 
    -- id 相同的为一组 , 从上往下执行
    -- id 不同的为一组,在所有组中, id 值越大的越优先执行
    explain
    select * from student where sid in (select s_id from sc where score > 60)

    select_type:

     查询的类型:主要是用于区别:普通查询、联合查询、子查询等的复杂查询

    table

    显示这一行数据是哪一张表的


    type

    type显示的是访问类型,是较为重要的一个指标,结果值从最好到最坏依次是:

    system > const > eq_ref > ref > fulltext > ref_or_null > index_merge > unique_subquery > index_subquery > range > index > ALL 

    需要记忆的

    system>const>eq_ref>ref>range>index>ALL

    一般来说,得保证查询至少达到 range 级别,最好能达到 ref

    possible_keys Key

    possible_keys:  可能使用的key

    Key:  实际使用的索引。如果为NULL,则没有使用索引

    温故而知新
  • 相关阅读:
    【2019-11-29】人品才是自己的护城河
    【一句日历】2019年11月
    【2019-11-27】没压力何来成长
    【2019-11-26】自我质疑的必要性
    day 02 ---class
    商品综合练习题
    day01 --class --home
    总结day1 ---- 基础内容学习 ,以及历史了解
    day00 预习 ------基础数据类型预习 ,int ,str ,bool ,dict ,set ,切片,等相关
    day00 -----博客作业1
  • 原文地址:https://www.cnblogs.com/Uzai/p/11260463.html
Copyright © 2011-2022 走看看