• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • MsSql
  • Mysql
  • oracle
  • MariaDB
  • DB2
  • SQLite
  • PostgreSQL
  • MongoDB
  • Redis
  • Access
  • 数据库其它
  • sybase
  • HBase
您的位置:首页 > 数据库 >Mysql > 6个简单的SQL优化 SELECT 语句

6个简单的SQL优化 SELECT 语句

作者:匿名 字体:[增加 减小] 来源:互联网 时间:2018-12-05

匿名通过本文主要向大家介绍了优化,SQL ,SELECT 语句等相关知识,希望本文的分享对您有所帮助

SELECT语句的性能调优有时是一个非常耗时的任务,在我看来它遵循帕累托原则。20%的努力很可能会给你带来80%的性能提升,而为了获得另外20%的性能提升你可能需要花费80%的时间。除非你在金星工作,那里的每一天都等于地球上的243天,否则交付期限很有可能使你没有足够的时间来调优SQL查询。

根据我多年编写和运行SQL语句的经验,我开始开发一个检查列表,当我试图提高查询性能时供我参考。在进行查询计划和阅读我使用的数据库文档之前,我会参考其中的内容,数据库文档有时会很复杂。我的检查列表绝对说不上全面或科学,它更像是一个保守计算,但我可以说,遵循这些简单的步骤大部分时间我确实能得到性能提升。检查列表如下。

检查索引

在SQL语句的WHERE和JOIN部分中用到的所有字段上,都应该加上索引。进行这个3分钟SQL性能测试。不管你的成绩如何,一定要阅读那些带有信息的结果。

限制工作数据集的大小

检查那些SELECT语句中用到的表,看看你是否可以应用WHERE子句进行过滤。一个典型的例子是,当表中只有几千行记录时,一个查询能够很好地执行。但随着应用程序的成长,查询慢了下来。解决方案或许非常简单,限制查询来查看当前月的数据即可。

当你的查询语句带有子查询时,注意在子查询的内部语句上使用过滤,而不是在外部语句上。

只选择你需要的字段

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

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

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

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

移除不必要的表

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

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

移除外部连接查询

这说起来容易做起来难,它取决于改变表的内容有多大的影响。一个解决办法是通过在两个表的行中放置占位符来删除OUTER JOINS操作。假设你有以下的表,它们通过定义OUTER JOINS来确保返回所有的数据:

CUSTOMER_IDCUSTOMER_NAME
1John Doe
2Mary Jane
3Peter Pan
4Joe Soap
分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • 优化mysql数据库的经验总结
  • MySQL查询优化之索引的应用详解
  • 查询优化之EXPLAIN的使用分析
  • MYSQL索引无效和索引有效的详细介绍
  • 基于MYSQL中优化的一些方法
  • MySQL的重装问题解决方法
  • 服务器不支持 MySql 数据库的解决方法
  • MySQL查询优化:连接查询排序浅谈
  • MySQL性能优化
  • MySQL性能优化的一些技巧帮助你的数据库

相关文章

  • 2018-12-05MongoDB结合Flexgrid的简单数据呈现
  • 2018-12-05SQL Server允许重复空字段不空字段值唯一
  • 2017-05-11MySQL SHOW 命令的使用介绍
  • 2018-12-05log引起的mysql不能启动的解决方法
  • 2017-05-11MYSQL5 masterslave数据同步配置方法第1/3页
  • 2018-12-05MySQL优化配置文件my.ini(discuz论坛)
  • 2018-12-05MySQL大表中重复字段的高效率查询方法
  • 2018-12-05带进度的SQL Server FileStream如何存取
  • 2018-12-05SQL中exists的使用方法
  • 2018-12-05sqlserver找回企业管理器的方法

文章分类

  • MsSql
  • Mysql
  • oracle
  • MariaDB
  • DB2
  • SQLite
  • PostgreSQL
  • MongoDB
  • Redis
  • Access
  • 数据库其它
  • sybase
  • HBase

最近更新的内容

    • SQLServer 获得用户最新或前n条订单的几种SQL语句小结
    • MySQL交叉表实现分享
    • mysql 从一个表中查数据并插入另一个表实现方法
    • sql查询语句优化
    • MySQL字符集是什么?字符集的相关介绍
    • MySQL连接无法解析HOST主机名的解决方法
    • Mysql select语句设置默认值的方法
    • MySQL存储过程的基本函数的相关讲解
    • 使用MySQL命令行修改密码
    • MySQL 和 SQL 注入与防范方法

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有