SELECT语句的性能调优有时是一个非常耗时的任务,在我看来它遵循帕累托原则。20%的努力很可能会给你带来80%的性能提升,而为了获得另外20%的性能提升你可能需要花费80%的时间。

检查索引:在SQL语句的WHERE和JOIN部分中用到的所有字段上,都应该加上索引;

限制工作数据集的大小:检查SELECT语句中用到的表,看看是否可以应用WHERE子句进行过滤;当表中只有几千行记录时,一个查询能够很好地执行,但随着应用程序的成长,查询慢了下来;解决方案是:限制查询来查看当前月的数据即可,当查询语句带有子查询时,注意在子查询的内部语句上使用过滤,而不是在外部语句上。

只选择需要的字段:额外的字段通常会增加返回数据的纹理,从而导致更多的数据被返回到SQL客户端。

          •使用带有报告和分析功能的应用程序时,有时报告性能低是因为报告工具必须对收到的、带有详细形式的数据做聚合操作

          •偶尔查询也可能运行地足够快,但问题可能是一个网络相关的问题,因为大量的详细数据通过网络发送到报告服务器

          •当使用一个面向列的DBMS时,只有选择的列会从磁盘读取。在查询中包含的列越少,IO开销就越小

移除不必要的表:移除不必要的表的原因,和移除查询语句中不需要的字段的原因一致

        编写SQL语句是一个过程,通常需要大量编写和测试SQL语句的迭代过程;在开发过程中,将表添加到查询中,而这对于SQL代码返回的数据可能不会有任何影响;一旦SQL运行正确,发现许多人不会回顾他们的脚本,不会删除那些对最终的返回数据没有任何影响和作用的表;通过移除与那些不必要表的JOINS操作,减少了大量数据库必须执行的流程;有时,就像移除列一样,会发现减少的数据又通过数据库返回来了

移除外部连接查询:它取决于改变表的内容有多大的影响;一个解决办法是通过在两个表的行中放置占位符来删除OUTER JOINS操作。

删除JOIN和WHERE子句中的计算字段:它取决于更改表模式的权限大小,可以将连接语句中用到的计算字段作为一个新字段在表中创建

优化 SQL SELECT 语句性能的更多相关文章

  1. 深入MySQL(四):MySQL的SQL查询语句性能优化概述

    关于SQL查询语句的优化,有一些一般的优化步骤,本节就介绍一下通用的优化步骤. 一条查询语句是如何执行的 首先,我们如果要明白一条查询语句所运行的过程,这样我们才能针对过程去进行优化. 参考我之前画的 ...

  2. SQL SELECT 语句

      本章讲解 SELECT 和 SELECT * 语句. SQL SELECT 语句 SELECT 语句用于从表中选取数据. 结果被存储在一个结果表中(称为结果集). SQL SELECT 语法 SE ...

  3. SQL SELECT语句

    基本SQL SELECT语句   1.       下面的语句是否可以执行成功 select ename , job , sal as salary  from emp; 2.       下面的语句 ...

  4. SQL Select语句完整的执行顺序(转)

    SQL Select语句完整的执行顺序: 1.from子句组装来自不同数据源的数据: 2.where子句基于指定的条件对记录行进行筛选: 3.group by子句将数据划分为多个分组: 4.使用聚集函 ...

  5. 170607、SQL Select语句完整的执行顺序

    SQL Select语句完整的执行顺序: 1.from子句组装来自不同数据源的数据: 2.where子句基于指定的条件对记录行进行筛选: 3.group by子句将数据划分为多个分组: 4.使用聚集函 ...

  6. SQL-W3School-基础:SQL SELECT 语句

    ylbtech-SQL-W3School-基础:SQL SELECT 语句 1.返回顶部 1. 本章讲解 SELECT 和 SELECT * 语句. SQL SELECT 语句 SELECT 语句用于 ...

  7. SQL select语句执行顺序

    sql查询原理和Select执行顺序 关键字: 数据库 一 sql语句的执行步骤 1)语法分析,分析语句的语法是否符合规范,衡量语句中各表达式的意义. 2) 语义分析,检查语句中涉及的所有数据库对象是 ...

  8. [转] 利用SET STATISTICS IO和SET STATISTICS TIME 优化SQL Server查询性能

    首先需要说明的是这篇文章的内容并不是如何调节SQL Server查询性能的(有关这方面的内容能写一本书),而是如何在SQL Server查询性能的调节中利用SET STATISTICS IO和SET ...

  9. 利用SET STATISTICS IO和SET STATISTICS TIME 优化SQL Server查询性能

    首先需要说明的是这篇文章的内容并不是如何调节SQL Server查询性能的(有关这方面的内容能写一本书),而是如何在SQL Server查询性能的调节中利用SET STATISTICS IO和SET ...

随机推荐

  1. NVMe协议1.3c(一) 概述

    刚开始接触NVMe,对此理解不深,如有错误敬请指出 1.1概述 NVM ExpressTM(NVMeTM)接口允许主机软件与非易失性存储器子系统通信. 此接口针对企业和客户端固态驱动器进行了优化,通常 ...

  2. union 和 case

    UNION 指令的目的是将两个 SQL 语句的结果合并起来,可以查看你要的查询结果. CASE更多的是一种判断分类,就想其他语言的case一样 1. CASE WHEN 表达式有两种形式 --简单Ca ...

  3. openFileDialog的使用

    这两天应用了一下openFileDialog,做的是上传的功能,在打开页面的时候进行的一系列操作虽说远远没有asp.net的上传控件好使,但是学习起来也是蛮还用的,下面是一个简单的应用 //点击浏览按 ...

  4. SamplesHashtable

    using System; using System.Collections; public class SamplesHashtable { public static void Main() { ...

  5. centos7.4 可远程可视化桌面安装

    先啰嗦一下VNC是什么( Virtual Network Computing)VNC允许Linux系统可以类似实现像Windows中的远程桌面访问那样访问Linux桌面.本文配置机器是兴宁市网络信息中 ...

  6. ubuntu下安装php7

    apt-cache pkgnames | grep php7.0 sudo apt-get install -y php7.0 libapache2-mod-php7.0 php7.0-cli php ...

  7. day 08文件与字符编码

    ASCII  一个字符占一个字节 GBK 中文使用两个字节,英文使用1个字节,使用开头一个比特位标识是英文还是中文 unicode:支持任何国家的语言,全部字符都是使用两个字节 utf-8 一个英文占 ...

  8. Django runserver UnicodeDecodeError

    编码问题可以说是我遇到过的python 2.7最大的败笔 今天写django时,很简单的一个项目却报UnicodeDecodeError,而我的代码中一个中文字符都没有出现. 如下: 网上找到的所谓解 ...

  9. ecmall 学习记录

    1. /* 载入配置项 */ $setting =& af(MODULE); Conf::load($setting->getAll()); af方法定义如下: /** * 获取数组文件 ...

  10. Beanshell断言

    Beanshell断言示例一:通过从数据库查询结果集,和从接口返回中解析json格式的返回内容,比较两者来验证sample请求是否成功 1>先通过JDBC PreProcessor把测试计划中所 ...