SQL优化小讲堂(一)——不查询多余的列和行

简介: 从今天开始,每天会给大家普及一点优化的小技巧。感兴趣的同学可以跟着多多练练手,示例数据库可以在阅读原文处获取。我使用的示例是AdventureWorks2012的备份包,小伙伴下载后还原即可。记得数据库要是高版本的才能还原成功,我使用的数据库是SQL Server 2016版本的。

1.不查询多余的列

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

SELECT * FROM [Sales].[SalesOrderDetail];

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

20.jpg

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

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

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

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

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

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

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

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

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

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

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

编译阶段:

SQL Server 分析和编译时间:

执行阶段:

SQL Server 执行时间:

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


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

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



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

SELECT UnitPrice FROM [Sales].[SalesOrderDetail];

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

21.jpg

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

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

2.不查询多余的行

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

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

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

22.jpg

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

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

2.不查询多余的行

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

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

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

23.jpg


可能有些同学对DISTINCT关键字有不同的看发,稍后我们根据具体情况再逐一给大家进行分析。

今天的课就讲到这里,小伙伴可以动手尝试一下。


相关文章
|
14天前
|
SQL NoSQL Java
Java使用sql查询mongodb
通过使用 MongoDB Connector for BI 和 JDBC,开发者可以在 Java 中使用 SQL 语法查询 MongoDB 数据库。这种方法对于熟悉 SQL 的团队非常有帮助,能够快速实现对 MongoDB 数据的操作。同时,也需要注意到这种方法的性能和功能限制,根据具体应用场景进行选择和优化。
49 9
|
1月前
|
SQL 存储 人工智能
Vanna:开源 AI 检索生成框架,自动生成精确的 SQL 查询
Vanna 是一个开源的 Python RAG(Retrieval-Augmented Generation)框架,能够基于大型语言模型(LLMs)为数据库生成精确的 SQL 查询。Vanna 支持多种 LLMs、向量数据库和 SQL 数据库,提供高准确性查询,同时确保数据库内容安全私密,不外泄。
126 7
Vanna:开源 AI 检索生成框架,自动生成精确的 SQL 查询
|
20天前
|
SQL Oracle 数据库
使用访问指导(SQL Access Advisor)优化数据库业务负载
本文介绍了Oracle的SQL访问指导(SQL Access Advisor)的应用场景及其使用方法。访问指导通过分析给定的工作负载,提供索引、物化视图和分区等方面的优化建议,帮助DBA提升数据库性能。具体步骤包括创建访问指导任务、创建工作负载、连接工作负载至访问指导、设置任务参数、运行访问指导、查看和应用优化建议。访问指导不仅针对单条SQL语句,还能综合考虑多条SQL语句的优化效果,为DBA提供全面的决策支持。
55 11
|
2月前
|
SQL Java
使用java在未知表字段情况下通过sql查询信息
使用java在未知表字段情况下通过sql查询信息
42 8
|
2月前
|
SQL 缓存 数据库
SQL慢查询优化策略
在数据库管理和应用开发中,SQL查询的性能优化至关重要。慢查询优化不仅可以提高应用的响应速度,还能降低服务器负载,提升用户体验。本文将详细介绍针对SQL慢查询的优化策略。
|
2月前
|
SQL 存储 BI
gbase 8a 数据库 SQL合并类优化——不同数据统计周期合并为一条SQL语句
gbase 8a 数据库 SQL合并类优化——不同数据统计周期合并为一条SQL语句
|
2月前
|
SQL 数据库
gbase 8a 数据库 SQL优化案例-关联顺序优化
gbase 8a 数据库 SQL优化案例-关联顺序优化
|
2月前
|
SQL 缓存 监控
SQL性能提升指南:五大优化策略与十个实战案例
在数据库性能优化的世界里,SQL优化是提升查询效率的关键。一个高效的SQL查询可以显著减少数据库的负载,提高应用响应速度,甚至影响整个系统的稳定性和扩展性。本文将介绍SQL优化的五大步骤,并结合十个实战案例,为你提供一份详尽的性能提升指南。
63 0
|
SQL 关系型数据库 索引
SQL优化常用方法53
分离表和索引
1333 0
|
SQL
SQL优化常用方法51
使用显式的游标(CURSORs)
1113 0