SQL优化之不“画蛇添足”

数据库 SQL Server
多小伙伴可能都知道这两个方法,但是为什么这么做可能还是不太清楚,下面就让我们看相关示例来给大家具体解释一下。

 [[398720]]

本文转载自微信公众号「SQL数据库开发」,作者 丶平凡世界 。转载本文请联系SQL数据库开发公众号。

SQL优化的方法有很多,今天给大家介绍一下两个简单但非常实用的方法:不查询多余的行和列。很多小伙伴可能都知道这两个方法,但是为什么这么做可能还是不太清楚,下面就让我们看相关示例来给大家具体解释一下。

1、不查多余的列

查询过程中经常为了省事,而直接使用*来代替所有的列,好处是不需要写明列。坏处就是遇到列比较多的表查询效率就大大折扣了。例如:

  1. SELECT * FROM [Sales].[SalesOrderDetail]; 

我们执行一下可以看到如下信息:

Q:上面的消息界面是怎么出来的呢?

A:点击菜单栏的查询——查询选项...——高级,将SET STATISTICS TIME和SET STATISTICS IO都勾选上就可以了

上面的相关信息我给大家解读一下:

扫描计数:索引或表扫描次数

逻辑读取:数据缓存中读取的页数

物理读取:从磁盘中读取的页数

预读:查询过程中,从磁盘放入缓存的页数

lob逻辑读取:从数据缓存中读取,image,text,ntext或大型数据的页数

lob物理读取:从磁盘中读取,image,text,ntext或大型数据的页数

lob预读:查询过程中,从磁盘放入缓存的image,text,ntext或大型数据的页数

语句的CPU时间分编译阶段和执行阶段。

CPU时间是指:执行语句的时间

占用时间是指:从磁盘读取数据再处理总的使用时间

编译阶段:

SQL Server 分析和编译时间:

执行阶段:

SQL Server 执行时间:

这些信息我们以后都会经常看到的,这是判断一个查询语句最直观的方式。

我们再单独查询一列看会怎么样?例如:

  1. SELECT UnitPrice FROM [Sales].[SalesOrderDetail]; 

我们执行一下可以看到如下信息:

通过上面的时间对比我们就可以清楚的看到:将列名明确的列出,不显示不相关的列效率有很大的提升。

这里就是大家经常看到的一条优化建议:不要直接使用*进行查询,而只查询需要的列。

当然如果本身有需要查看全表内容,就不在此条优化之列了。

2、不查多余的行

  • 在查询的时候使用WHERE关键字可以很好的过滤掉不需要的行。这也是提高查询效率的一种方式,其实这才是WHERE关键字存在的意义。

例如:

  1. SELECT UnitPrice FROM [Sales].[SalesOrderDetail] WHERE UnitPrice>1000; 

我们执行一下可以看到如下信息:

所占用的时间成倍的减少,效果显而易见。

  • 使用DISTINCT关键字减少多余重复的行。

例如:

  1. SELECT DISTINCT UnitPrice 
  2. FROM [Sales].[SalesOrderDetail] 
  3. WHERE UnitPrice>1000; 

我们执行一下可以看到如下信息:

我们发现,在某些情况下DISTINCT也可以加快数据的查询效率。

 

责任编辑:武晓燕 来源: SQL数据库开发
相关推荐

2021-06-09 09:19:39

SSL证书数据安全公钥

2015-05-14 16:19:40

2018-01-09 16:56:32

数据库OracleSQL优化

2023-10-09 07:42:49

PawSQL数据库管理

2021-07-16 23:01:03

SQL索引性能

2018-04-19 09:02:14

SQL ServerSQL性能优化

2023-11-28 07:54:18

2021-07-26 18:23:23

SQL策略优化

2023-11-07 07:50:55

LIMIT子句下推优化

2023-10-23 09:19:47

PawSQL数据库

2018-03-30 13:59:22

数据库SQL语句性能优化

2018-03-30 14:30:10

数据库SQL语句性能优化

2018-10-19 12:47:35

MySQLSQL优化数据库

2012-02-27 09:30:22

JavaScript

2017-09-05 12:44:15

MySQLSQL优化覆盖索引

2022-09-28 11:34:27

用户行为数据业务

2011-08-03 13:32:00

SQL Server优化

2009-10-20 18:32:25

Oracle 10g

2022-07-05 21:31:21

索引SQL分库分表

2016-12-08 15:47:54

sql优化数据
点赞
收藏

51CTO技术栈公众号