博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
优化 SQL SELECT 语句性能
阅读量:4569 次
发布时间:2019-06-08

本文共 981 字,大约阅读时间需要 3 分钟。

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

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

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

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

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

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

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

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

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

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

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

posted on
2018-08-06 10:59 阅读(
...) 评论(
...)

转载于:https://www.cnblogs.com/qinxu/p/9429120.html

你可能感兴趣的文章
Apache 使用 .htaccess 文件配置全站 301 跳转代码
查看>>
微信小程序 获取OpenId
查看>>
IDEA快捷操作
查看>>
android 的touch event分析
查看>>
转:C#进阶系列——WebApi 跨域问题解决方案:CORS
查看>>
实参和形参
查看>>
利用GPGPU计算大规模群落仿真行为
查看>>
BZOJ 3211: 花神游历各国【线段树区间开方问题】
查看>>
C语言sprintf和sscanf函数用法
查看>>
javascript 基础
查看>>
WAV文件格式
查看>>
WPF stringformat设置
查看>>
阻止vue事件冒泡的方法
查看>>
第十七周进度总结
查看>>
javascript面向对象基础
查看>>
利用iscroll实现上拉加载下拉刷新
查看>>
C# 中的委托和事件
查看>>
用户控件 RadioButtonList
查看>>
汇编语言描述
查看>>
由java双亲模式委派模式引起的思考——Java类加载原理解析
查看>>