学会查看数据库执行计划

栏目:云星空知识作者:金蝶来源:金蝶云社区发布:2024-09-16浏览:1

学会查看数据库执行计划

什么是执行计划?

    执行计划(execution plan,也叫查询计划或者解释计划)是数据库执行 SQL 语句的具体步骤,例如通过索引还是全表扫描访问表中的数据,连接查询的实现方式和连接的顺序等。

如何查看执行计划?

    以sqlserver为例image.webp

看懂执行计划

从上图可以看出,执行计划可以很直观的显示一个sql语句的执行过程,查询了那些表,怎么查询的,走没走索引,走的哪些索引,都可以一眼就看出来,这对我们分析sql语句的性能有很大帮助。

举例说明:

有这样一条sql语句:select * from test_table2 where pay_id in (1,2,3)

我们在表test_table2给pay_id加了索引,按理说它查找的时候会走索引,我们看看执行计划是怎么执行的。

image.webp

68%的开销是用于键查找,没走索引, 32%的开销走了pay_id的索引查找,为什么加了索引,还有一部分没走索引呢?这是因为我们查找的select * ,查找的是所有字段,表的其他字段,每加索引,只有pay_id加了,所以只走了一部分索引查找,但是性能最高点,仍然是键查找,怎么让键查找变成索引查找呢?我们都会想到把表的所有字段都加上索引,当然这是不现实的,也是没必要的。

  1.     针对上面的问题,如果pay_id是主键索引,也不会走键查找,我们可以看看效果:

    image.webp

    表test_table2的主键是Id,通过主键id查找所有字段,可以看到是不会有键查找的,全部走的是聚集索引,不会二次查找,像非聚集索引会走二次查找,所以才会产生像刚刚发生的那样,走键查找的情况。

  2. 还有一种也可以避免走键查找,就是创建覆盖索引。像这样:

    image.webp

结论:

    学会看执行计划,对我们分析sql语句性能很重要,也顺带介绍了聚集索引,非聚集索引,覆盖索引。





学会查看数据库执行计划

什么是执行计划? 执行计划(execution plan,也叫查询计划或者解释计划)是数据库执行 SQL 语句的具体步骤,例如通过索引还是全表扫...
点击下载文档
确认删除?
回到顶部
客服QQ
  • 客服QQ点击这里给我发消息