`
skzr.org
  • 浏览: 367112 次
  • 性别: Icon_minigender_1
  • 来自: 长沙
社区版块
存档分类
最新评论

我的SQL调优方法

SQL 
阅读更多

3个关键点:

 

  • 执行计划
  • 索引
  • 查询中每步的查询集大小

 

 

我的SQL调优步骤:

 

1. 发现慢查询后,分析其执行计划

2. 合理建立索引,再次分析测试

3. 如果经过1、2依然对性能不满意,写出所有可能的查询SQL,分别按照1、2处理;

4. 根据1、2、3,使用实际数据,权衡后选择最佳的SQL

 

(红色标注的是关键,艺术在于平衡)

注意大数据记录的表查询,首要原则不一定是利用索引,往往从减少每步SQL查询结果集能得到更好地性能。

 

就我经历的几次系统调优中,就遇到了几个突破常理的:

案例:

    1页面数据显示需要大约8分钟才能出来;

    优化过程:分析页面慢的原因是一个SQL查询(多表、分组统计)太慢,通过分析执行计划看到确实全部使用了索引,老大说这个无法再优化了。

    我写出所有可能的SQL,然后一个个测试,最后使用了in的查询方式,测试结果大吃一惊,只需要不到300ms。从此后遇到sql性能问题时,我记住了这个原则——写出所有可能的查询SQL,实际测试

 

开发时需要注意的:实际数据才能检验你写的SQL真理,不要过早优化SQL,先尽量写最简单易读的SQL;

大数据记录的表往往in的查询方式性能更高,in时也要注意distinct和数据库的内部id(如oracle的rowid),往往可以得到意想不到的性能。

 

案例:

   1用户关键业务过程,每天需要执行一次、有新档案时也需要执行。利用1个存储过程扫描历史记录已决定是否需要初始化某些区域内的客户档案数据,执行耗时大约5分钟:

   优化过程:

1. 看懂存储过程:因为是外包做的,当时也没有文档,痛苦痛苦再痛苦,业务复杂,存储过程大约“不到”400行,那个难看阿,看懂后无非就是判断某些数据不存在,就初始化,如果已存在了,就根据条件修改某些值。

2. 写可能SQL:这已经是最简单可读的,要我写也只能写成这样。只好从性能调优入手,我把数据查询,大量使用子查询来减少每步的SQL结果集,最终存储过程代码近700行,可读性降低了,不过性能上去了,实测不到30s即可执行完毕。

 

实践才是检验的唯一标准,穷举自己所知道的,一个一个实地检测      

 

2
4
分享到:
评论
5 楼 skzr.org 2011-07-23  
xzcgeorge 写道
Your blog is really from your pratices, I like it as I have same experice as yours. 

Thanks for sharing.

Thanks

博客里原创的都是我的实践——分享经验、传递价值、成就你我
(注:转载我会标明是转载、出自哪儿)

再次感谢xzcgeorgeboomionhyneng,感谢各位朋友的回复,感谢朋友们对我的鼓舞 
4 楼 xzcgeorge 2011-07-22  
Your blog is really from your pratices, I like it as I have same experice as yours. 

Thanks for sharing.
3 楼 boomion 2011-07-22  
 
2 楼 skzr.org 2011-07-22  
hyneng 写道
朋友,有没有mysql调优方面的书介绍

对于数据库软件本身的调优,不会,毕竟不是DBA。
我只会SQL调优。

呵呵,我也只会去看mysql的my.cnf里面的参数自己再查资料修改。
生产系统中只接触过oracle、sybase、db2。
1 楼 hyneng 2011-07-22  
朋友,有没有mysql调优方面的书介绍

相关推荐

    高性能SQL调优

    Oracle数据库作为业界广泛使用的数据库管理系统,其SQL调优是提升系统性能的关键环节。"高性能SQL调优"这一主题涵盖了许多相关知识点,包括但不限于以下内容: 1. **SQL优化基础**:SQL查询是数据库操作的核心,...

    sql调优工具mytun

    SQL调优是数据库管理中的重要环节,它涉及到对SQL查询的优化,以提高数据库的运行效率,减少资源消耗,提升整体系统性能。MyTun是一款专门用于SQL调优的工具,它能帮助数据库管理员和开发人员更好地理解SQL查询的...

    sql调优 sql调优

    SQL调优对于任何处理大量数据的应用程序来说都是不可或缺的,尤其在大数据环境下,其重要性不言而喻。以下是关于SQL调优的一些关键知识点: 1. **查询分析**:SQL调优首先从理解查询开始。通过分析SQL语句,识别...

    SQL optimizer and rewriter. - SQL 优化器、重写器(辅助 SQL 调优)

    - SQL 优化器、重写器(辅助 SQL 调优)。SQL optimizer and rewriter. - SQL 优化器、重写器(辅助 SQL 调优)。SQL optimizer and rewriter. - SQL 优化器、重写器(辅助 SQL 调优)。SQL optimizer and rewriter. - ...

    ORACLE 19C SQL调优指南 中文版 Oracle DBA

    Oracle 19C SQL调优是数据库管理员(DBA)日常工作中不可或缺的一部分,它涉及到优化SQL查询性能,提高数据库系统的整体效率。本指南针对Oracle 19C版本,提供了丰富的调优策略和技术,旨在帮助DBA们更好地管理和维护...

    SQL调优与案例

    SQL调优涉及到多个方面,包括查询优化、索引优化、存储优化等,旨在提高数据检索速度,减少资源消耗,提升整体应用性能。本篇文章将围绕“SQL调优与案例”这一主题,结合MySQL性能调优,深入探讨相关知识点。 1. **...

    Oracle 19C SQL调优指南 中文版 DBA优化利器

    《Oracle 19C SQL调优指南》是针对Oracle数据库管理员(DBA)的重要参考资料,尤其适合那些希望提升SQL性能的专业人士。SQL调优是数据库管理中的核心技能,它关乎到系统的响应时间、资源利用率和整体性能。Oracle 19C...

    ORACLE执行计划和SQL调优

    【Oracle执行计划和SQL调优】是数据库管理中至关重要的环节,主要涉及到如何高效地运行SQL语句,提高数据库性能。下面将详细讲解执行计划的相关概念以及SQL调优的策略。 1. **Rowid的概念**:Rowid是Oracle数据库中...

    SQL语句常用的调优方法

    SQL语句常用的调优方法 AWR解读 SQL优化

    ORACLE 19C SQL调优指南.chm

    Oracle 19C SQL调优优化指南,全面提升SQL优化能力,DBA必备,开发必备

    DB2 SQL性能调优秘笈

    ### DB2 SQL性能调优秘笈 ...通过学习这些内容,DBA们可以更加深入地理解DB2内部的工作机制,并掌握一系列有效的性能调优方法。这对于任何希望提高DB2数据库性能的专业人士而言都是一本宝贵的参考书籍。

    自我管理数据库-自动的sql调优

    #### 四、自动SQL调优的实现方法 - **基于规则的方法**:利用预定义的规则集来指导调优过程。 - **基于成本的方法**:考虑各种执行策略的成本,选择成本最低的方案。 - **机器学习方法**:使用机器学习算法来预测和...

    sql调优的方法大全.pdf

    以下是一些常见的SQL调优方法: 1. 索引优化 创建索引:在经常用于查询条件的列上创建索引,如WHERE子句、ORDER BY子句涉及的列。但注意索引不宜过多,一般不超过6个,以免降低INSERT和UPDATE操作的效率。 使用...

    111 案例实战:千万级用户场景下的运营系统SQL调优(3).pdf

    在处理千万级用户场景下的运营系统SQL调优时,我们面对的挑战是如何快速且准确地定位和解决SQL执行计划中导致性能低下的问题。根据提供的文件内容,以下是对千万级用户场景下SQL调优的详细分析。 首先,通过执行SQL...

    ORACLE执行计划和SQL调优.pptx

    Oracle执行计划和SQL调优是数据库管理中至关重要的主题,主要涉及如何优化SQL查询以提高数据库性能。在Oracle数据库系统中,SQL语句的执行效率直接影响到整个应用程序的响应速度和资源消耗。以下是对相关概念的详细...

    DB2SQL性能调优秘笈

    资源名称:DB2 SQL性能调优秘笈资源截图: 资源太大,传百度网盘了,链接在附件中,有需要的同学自取。

    sql调优.ppt

    百万级别的sql优化及索引的使用,为了避免全表扫描查询语句的优化

    ORACLE执行计划和SQL调优知识概述.pptx

    SQL 调优的方法有很多,如重写 SQL 语句、建立索引、优化存储过程等。重写 SQL 语句可以提高查询效率,建立索引可以提高查询速度,优化存储过程可以减少资源消耗。 工具介绍 ORACLE 提供了多种工具来辅助执行计划...

Global site tag (gtag.js) - Google Analytics