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,则没有使用索引

    温故而知新
  • 相关阅读:
    poj3278 Catch That Cow
    poj2251 Dungeon Master
    poj1321 棋盘问题
    poj3083 Children of the Candy Cor
    jvm基础知识—垃圾回收机制
    jvm基础知识1
    java面试基础必备
    java soket通信总结 bio nio aio的区别和总结
    java scoket aIO 通信
    java scoket Blocking 阻塞IO socket通信四
  • 原文地址:https://www.cnblogs.com/Uzai/p/11260463.html
Copyright © 2011-2022 走看看