SQLite explain 查询语句 (select) 进行分析

SQLite EXPLAIN 命令或者 EXPLAIN QUERY PLAN 命令用于对查询语句 (select) 进行分析

EXPLAIN 命令或者 EXPLAIN QUERY PLAN 命令只用于交互式分析和排除故障

可以使用它们来分析查询语句的性能,比如有没有使用索引,或者检查的行总数等

语法

EXPLAIN 命令的语法格式如下

EXPLAIN [SQLite Query]

EXPLAIN QUERY PLAN 命令的语法格式如下

EXPLAIN  QUERY PLAN [SQLite Query]

范例

先运行下面的 SQLite SQL 语句创建测试数据

DROP TABLE tbl_employee;

CREATE TABLE tbl_employee (
   id INTEGER PRIMARY KEY AUTOINCREMENT  NOT NULL,
   name           CHAR(64) NOT NULL,
   age            INTEGER  NOT NULL,
   city           CHAR(64),
   salary         REAL
);



INSERT INTO tbl_employee (name,age,city,salary) VALUES
    ('张三', 25, 'pek', 102400.00 ),
    ('李四', 18, 'shanghai', 88888.00 ),
    ('王五', 22, 'hangzhou', 22000.00 ),
    ('孙六', 32, 'pek', 32000.00 ),
    ('钱七', 25, 'shanghai', 25000.00 ),
    ('赵二', 45, 'pek', 45800.00 ),
    ('冯九', 37, 'chengdu', 15000.00 );

我们先运行一个 SQL 语句查询 salary 高于 30000 的员工

SELECT *  FROM tbl_employee  WHERE salary > 30000;

输出结果如下

id          name        age         city        salary    
----------  ----------  ----------  ----------  ----------
1           张三          25          pek         102400.0  
2           李四          18          shanghai    88888.0   
4           孙六          32          pek         32000.0   
6           赵二          45          pek         45800.0 

然后我们给 SQL 语句添加 explain 来分析下这条语句

EXPLAIN SELECT *  FROM tbl_employee  WHERE salary > 30000;

输出结果如下 (我去掉了第一列 addr)

每一行每一列代表啥意思呢?以后再讲,不然就说来话长

Explain Query Plan

我们一般情况下是使用 Explain Query Plan

EXPLAIN QUERY PLAN SELECT *  FROM tbl_employee  WHERE salary > 30000;

输出结果如下

selectid    order       from        detail                 
----------  ----------  ----------  -----------------------
0           0           0           SCAN TABLE tbl_employee

SCAN 表示全表扫描,没有用到所以,我们给 salary 添加索引试一试

CREATE INDEX salary ON tbl_employee(salary);

然后再运行上一条语句,可以看到 detail 列输出如下

SEARCH TABLE tbl_employee USING INDEX salary (salary>?)

USING INDEX salary 查询会用到索引 salary

SQLite 基础教程

关于   |   FAQ   |   我们的愿景   |   广告投放   |  博客

  简单教程,简单编程 - IT 入门首选站

Copyright © 2013-2022 简单教程 twle.cn All Rights Reserved.