基于案例理解MySQL执行计划

二、获取SQL执行计划

方法1(命令行):EXPLAIN sql_statement 方法2(Toad):Toad里边在SQL编辑器里边点击explain plan 方法3(Navicate)Navicate里边点击解释

三、案例

1、原始SQL及完整执行计划

原始SQL语句:
SELECT c.customerNumber, c.customerName, e.lastname
FROM customers c
     INNER JOIN employees e ON c.salesRepEmployeeNumber = e.employeeNumber
WHERE e.lastname LIKE T%
      AND EXISTS
             (SELECT orderNumber, SUM(priceEach * quantityOrdered)
              FROM orderdetails INNER JOIN orders USING (orderNumber)
              WHERE customerNumber = c.customerNumber
              GROUP BY orderNumber
              HAVING SUM(priceEach * quantityOrdered) > 50000)
UNION
SELECT customerNumber, customerName, NULL
FROM customers
WHERE customerName LIKE T%

2、执行计划包含的信息 – id列

3、执行计划包含的信息 – select_type列

4、执行计划包含的信息 – table列

5、执行计划包含的信息 – type列cost对比

type列示例

6、执行计划包含的信息 – key列

7、执行计划包含的信息 – ref与rows

8、执行计划包含的信息 – filtered列

9、执行计划包含的信息 – extra列

经验分享 程序员 微信小程序 职场和发展