优化 SQL SELECT 语句性能
SELECT语句的性能调优有时是一个非常耗时的任务,在我看来它遵循帕累托原则。20%的努力很可能会给你带来80%的性能提升,而为了获得另外20%的性能提升你可能需要花费80%的时间。
检查索引:在SQL语句的WHERE和JOIN部分中用到的所有字段上,都应该加上索引;
限制工作数据集的大小:检查SELECT语句中用到的表,看看是否可以应用WHERE子句进行过滤;当表中只有几千行记录时,一个查询能够很好地执行,但随着应用程序的成长,查询慢了下来;解决方案是:限制查询来查看当前月的数据即可,当查询语句带有子查询时,注意在子查询的内部语句上使用过滤,而不是在外部语句上。
只选择需要的字段:额外的字段通常会增加返回数据的纹理,从而导致更多的数据被返回到SQL客户端。
•使用带有报告和分析功能的应用程序时,有时报告性能低是因为报告工具必须对收到的、带有详细形式的数据做聚合操作
•偶尔查询也可能运行地足够快,但问题可能是一个网络相关的问题,因为大量的详细数据通过网络发送到报告服务器
•当使用一个面向列的DBMS时,只有选择的列会从磁盘读取。在查询中包含的列越少,IO开销就越小
移除不必要的表:移除不必要的表的原因,和移除查询语句中不需要的字段的原因一致
编写SQL语句是一个过程,通常需要大量编写和测试SQL语句的迭代过程;在开发过程中,将表添加到查询中,而这对于SQL代码返回的数据可能不会有任何影响;一旦SQL运行正确,发现许多人不会回顾他们的脚本,不会删除那些对最终的返回数据没有任何影响和作用的表;通过移除与那些不必要表的JOINS操作,减少了大量数据库必须执行的流程;有时,就像移除列一样,会发现减少的数据又通过数据库返回来了
移除外部连接查询:它取决于改变表的内容有多大的影响;一个解决办法是通过在两个表的行中放置占位符来删除OUTER JOINS操作。
删除JOIN和WHERE子句中的计算字段:它取决于更改表模式的权限大小,可以将连接语句中用到的计算字段作为一个新字段在表中创建
优化 SQL SELECT 语句性能的更多相关文章
- 深入MySQL(四):MySQL的SQL查询语句性能优化概述
关于SQL查询语句的优化,有一些一般的优化步骤,本节就介绍一下通用的优化步骤. 一条查询语句是如何执行的 首先,我们如果要明白一条查询语句所运行的过程,这样我们才能针对过程去进行优化. 参考我之前画的 ...
- SQL SELECT 语句
本章讲解 SELECT 和 SELECT * 语句. SQL SELECT 语句 SELECT 语句用于从表中选取数据. 结果被存储在一个结果表中(称为结果集). SQL SELECT 语法 SE ...
- SQL SELECT语句
基本SQL SELECT语句 1. 下面的语句是否可以执行成功 select ename , job , sal as salary from emp; 2. 下面的语句 ...
- SQL Select语句完整的执行顺序(转)
SQL Select语句完整的执行顺序: 1.from子句组装来自不同数据源的数据: 2.where子句基于指定的条件对记录行进行筛选: 3.group by子句将数据划分为多个分组: 4.使用聚集函 ...
- 170607、SQL Select语句完整的执行顺序
SQL Select语句完整的执行顺序: 1.from子句组装来自不同数据源的数据: 2.where子句基于指定的条件对记录行进行筛选: 3.group by子句将数据划分为多个分组: 4.使用聚集函 ...
- SQL-W3School-基础:SQL SELECT 语句
ylbtech-SQL-W3School-基础:SQL SELECT 语句 1.返回顶部 1. 本章讲解 SELECT 和 SELECT * 语句. SQL SELECT 语句 SELECT 语句用于 ...
- SQL select语句执行顺序
sql查询原理和Select执行顺序 关键字: 数据库 一 sql语句的执行步骤 1)语法分析,分析语句的语法是否符合规范,衡量语句中各表达式的意义. 2) 语义分析,检查语句中涉及的所有数据库对象是 ...
- [转] 利用SET STATISTICS IO和SET STATISTICS TIME 优化SQL Server查询性能
首先需要说明的是这篇文章的内容并不是如何调节SQL Server查询性能的(有关这方面的内容能写一本书),而是如何在SQL Server查询性能的调节中利用SET STATISTICS IO和SET ...
- 利用SET STATISTICS IO和SET STATISTICS TIME 优化SQL Server查询性能
首先需要说明的是这篇文章的内容并不是如何调节SQL Server查询性能的(有关这方面的内容能写一本书),而是如何在SQL Server查询性能的调节中利用SET STATISTICS IO和SET ...
随机推荐
- css.1
background-repeat背景平铺background-x水平平铺 background-y垂直平铺 background:url()no-repeat;不平铺 background-size ...
- ceph压力测试结果总结
万兆网速的ceph分布式存储单虚拟机下的带宽和iops测试结果: 带宽: 写:700-850MB 读:800-900MB iops: 写:15000-20000 读:45000-55000
- FCC JS基础算法题(1):Factorialize a Number(计算一个整数的阶乘)
题目描述: 如果用字母n来代表一个整数,阶乘代表着所有小于或等于n的整数的乘积.阶乘通常简写成 n!例如: 5! = 1 * 2 * 3 * 4 * 5 = 120. 算法: function fac ...
- MVVM设计模式加RAC响应式编程
一:为什么要用MVVM? 为什么要用MVVM?只是因为它不会让我时常懵逼. 每次做完项目过后,都会被自己庞大的ViewController代码吓坏,不管是什么网络请求.networking data ...
- latex之矩阵表示
$ \begin{matrix} 1 & 0 & 0\\ 0 & 1 & 0\\ 0 & 0 & 1 \end{matrix}\quad \begin{ ...
- Session & Cookie小知识~
Cookie 一个HTTP cookie的(也称为网络Cookie,互联网的cookie,浏览器cookie,或者干脆饼干)是一小块从发送的数据的网站用户的并存储在用户的计算机上的网页浏览器,而用户浏 ...
- 唯一分解定理(以Minimun Sum LCM UVa 10791为例)
唯一分解定理是指任何正整数都可以分解为一些素数的幂之积,即任意正整数n=a1^p1*a2^p2*...*ai^pi:其中ai为任意素数,pi为任意整数. 题意是输入整数n,求至少2个整数,使得它们的最 ...
- 原来bug解决了,是这样的感觉
终于过了,感觉好想哭啊,又莫名其妙的爽,原来这就是bug
- Linux上安装MangoDB
版本 MongDB4.0.3 安装 tar -zxvf mongodb-linux-x86_64-rhel62-4.0.3.tgz默认的数据目录在/data/db,也可以指定目录启动命令./bin/m ...
- 使用Blend设计出符合效果的WPF界面
之前不会用blend,感觉好难的,但美工给出的效果自己有没办法实现,所以研究了一下blend,感觉没有想象中的那么难 废话不多说,开始界面设计 今天拿到美工给的一个界面效果图 这个界面说实话,还可以吧 ...