`
zzhonghe
  • 浏览: 243303 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

SQL性能调优技巧

    博客分类:
  • DB
 
阅读更多

Data Model设计的Tip

 
1. 以三个范式为基础,业务的独立性和原子性拆分要合适,杜绝Key的冗余和不充分依赖
2. 对于有NULL值的时候,说明可以拆分为子类, 如果有互斥值,比如两个字段,如果A有值,那么B就不能有值
3. 隐藏的约束,某个Column为A值,那么另外一个Column就必须为B值,或者某个Column只能是1~20的值
4. 对于Boolean值,比如某个Flag Column,  Y/N, 其实可以考虑用更有意义的值来替代,比如Complete Date. 当然如果处于性能考虑的话不在此列。
 
 
高效访问DB的Tip
 
1.  java单独调用的语句,可以加上/**/Select ...的注释,方便在dbms_application_info中识别相应的语句
2. 减少于DB连接的次数,减少编译语句的次数, DB Pool,  PreparedStatement
3. 从最终的查询目标出发,查找数据。而不是从过程出发,查找数据
4. 不要动态建立数据库对象,比如索引,临时表,中间表等,都是不可取的。用GTtable是非常好的选择。
5. 修改数据库表数据,尽量用1条SQL搞定一批,而不是打开游标,然后update.  检索+处理+插入数据
6. 接近DB的核心来处理数据,速度越快,SQL>PLSQL>Java
7. 杜绝使用count(*),一定可以找得到替代的方式
8. 用NVL, NULLIF, Case When, Decode等语句来替代IF ELSE逻辑,处理速度要快些。
9. update + Case When, 可以合并多个update语句到1条里面
10. 慎用自定义的函数,特别是带有select语句的函数method,性能杀手,而且无法优化
11. where条件中用decode,一条语句查出多种记录。
12. 能不抛异常就别抛,不要在异常处理逻辑中加上业务
13. 基于源表对目标表做Insert,Update,Delete操作, 用Merge into...When Matched then Insert ... 
          http://www.cnblogs.com/lenxu/archive/2012/02/14/2350922.html
 
 
索引
 
1. 维护一个索引的开销,可能比一张表还要大,所以要精确设计索引,每个所以有是非常必须才添加
2. 如果一次获取的数据比较多,当超过表中数据总数的10%以上,那么是没有必要有索引,全表扫描可能更快
3. 索引指向的是某个数据块,而不是某条记录,所以紧凑的数据块结构能够获得更好的性能
4. 索引列上使用函数,会让索引失效,另外维护函数索引,成本会非常的高
5. 隐式的类型转换会让索引失效。 a=123  如果a是字符串,那么a上的索引会失效
6. 复合索引优于普通索引,1个索引可以适用多个场景使用,减少维护索引的数量
7. 逆序索引 Reverse Index,将key逆序后,再建索引,减少高并发的竞争资源,范围查询无效
8. 哈希索引,把key的值进行索引,提高并发性能,但是不能范围查。
 
 
SQL语句技巧
 
1. 关系操作有join, 非关系操作有group by, order by. 非关系操作需要临时的表空间进行存储
2. 单条数据查询响应时间要很快,努力让结果集和时间成正比
3. 复杂查询中尽量不用视图,可以会join到不需要的数据,不利于性能
4. exist用于子查询的情况是,父表数据少,子表数据多。in则是子表数据少,父表数据多的情况。  not exist和not in的场景与此类似
5. in的括号里面暗含了distinct和order by的操作,放置于内存。
6. Rank聚合函数
 

 

分享到:
评论

相关推荐

    DB2 SQL性能调优秘笈

    《DB2 SQL性能调优秘笈》不仅详尽阐述了100余条SQL语句优化的技巧和最佳实践、编写高性能SQL语句的标准和原则,以及DB2数据库性能优化的“15步法”,而且还包含大量案例,为解决各种复杂的DB2性能问题提供了解决方案...

    SQL-Server程序性能调优

    性能调优:SQL Server硬件配置、选择硬件、调优服务器、优化SQL Server配置、SQL Server设计优化、优化数据库的设计、SQL Server调优SQL编程、如何优化你的T-SQL代码、谨慎使用触发器、 避免使用游标(Cursors)、...

    MySQL性能调优与架构设计.mobi

    本书以 MySQL 数据库的基础及维护为切入点,重点介绍了 MySQL 数据库应用系统的性能调优,以及高可用可扩展的架构设计。 全书共分3篇,基础篇介绍了MySQL软件的基础知识、架构组成、存储引擎、安全管理及基本的备份...

    MySQL性能调优与架构设计(PDF)

    本书以 MySQL 数据库的基础及维护为切入点,重点介绍了 MySQL 数据库应用系统的性能调优,以及高可用可扩展的架构设计。 全书共分3 篇,基础篇介绍了MySQL软件的基础知识、架构组成、存储引擎、安全管理及基本的备份...

    MySQL管理之道 性能调优、高可用与监控.part2.rar

    《mysql管理之道:性能调优、高可用与监控》由资深mysql专家撰写,以最新的mysql版本为基础,以构建高性能mysql服务器为核心,从故障诊断、表设计、sql优化、性能参数调优、mydumper逻辑、xtrabackup热备份与恢复、...

    MySQL性能调优与架构设计

    本书以 MySQL 数据库的基础及维护为切入点,重点介绍了 MySQL 数据库应用系统的性能调优,以及高可用可扩展的架构设计。  全书共分3篇,基础篇介绍了MySQL软件的基础知识、架构组成、存储引擎、安全管理及基本的...

    SQLServer的性能调优:解决查询速度慢的五种方法

    Azure查询性能洞察等相关内容。 本文来自博客园,由火龙果软件Anna编辑、推荐。SQLServer的一个重要功能是内置于其中的所有动态管理视图(DMV)。它们有数十种,可以提供有关各种主题的丰富信息。有几个DMV提

    MySQL5.1性能调优与架构设计.mobi

    以MySQL数据库的基础及维护为切入点,重点介绍了MySQL数据库应用系统的性能调优,以及高可用可扩展的架构设计。 ●基础篇介绍了MySQL软件的基础知识、架构组成、存储引擎、安全管理及基本的备份恢复知识 ●性能优化...

    MySQL性能调优与架构设计.pdf

    如 MySQL Schema 设计的技巧,Query 语句的性能优化方式方法及MySQL Server中SQL层和存储引擎层的优化思路。同时还分析了 MySQL 数据库中主要存储引擎的锁定机制。架构设计篇则主要以设计一个高可用可扩展的分布式...

    高性能FlinkSQL优化技巧

    MicroBatch在元素序列化效率、反压表现、吞吐和延迟性能上都要优于MiniBatch。微批处理通过增加延迟换取高吞吐,如果您有超低延迟的要求,不建议开启微批处理。通常对于聚合的场景,微批处理可以显

    成功之路 Oracle 11g 中文学习笔记

    成功之路 Oracle 11g ...在介绍Oracle系统管理的知识以后,讲介绍与开发相关的内容(如PL/SQL基础知识、存储过程、函数、包等),并介绍数据库性能调整,本书重点介绍了SQL语言调优。SQL语句调优是本书的另一个大特色!

    SQL Server 2012 管理高级教程(第2版)试读

    教授读者成功管理SQL Server 2012所需的技能,你将会学到如何处理最困难的管理难题,包括变更管理、安全性、性能调优、监控、备份。你还可以学到如何掌握SQLServer 2012中的最新特性,包括客户端连接性的提升、...

    weblogic平台J2EE调优策略

    1.2.3 优化SQL语句 1.3 Web代码调优 1.3.1 HttpSession的使用 1.3.2 JSP代码调优 1.3.3 Servlet代码调优 1.4 JMS代码调优 1.4.1 注意必要的事项,避免使用不必要的特征 1.4.2 消息类型的选择 1.4.3 确认方式的选择和...

    db2数据库性能优化小技巧

    db2数据库性能优化小技巧

    成功之路:Oracle11g学习笔记.pdf

    在介绍Oracle系统管理的知识以后,将介绍与开发相关的内容(如PL/SQL基础知识、存储过程、函数、包等),并介绍数据库性能调整,《成功之路:Oracle 11g学习笔记》重点介绍SQL语句调优。SQL语句调优是《成功之路:Oracle...

    Effective MySQL之SQL语句最优化

    析和调优有问题的SQL语句。 主要内容 ● 找出收集和诊断问题必备的分析命令 ● 创建MySQL索引来改进查询性能 ● 掌握MySQL的查询执行计划 ● 找出影响查询执行和性能的关键配置变量 ● 用SQL语句优化的...

    高性能MySQL(第二版着眼于健壮性、安全性及数据完整性)

    全书包含14章和4个附录,内容覆盖mysql系统架构、设计应用技巧、sql语句优化、服务器性能调优、系统配置管理和安全设置、监控分析,以及复制、扩展和备份/还原等主题,每一章的内容自成体系,适合各领域技术人员作...

    Effective MySQL之SQL语句最优化(高清)

    《Effective MySQL之SQL语句最优化》提供了很多可以用于改进数据库和应用程序性能的最佳实践技巧,并对这些技巧做了详细的解释。《Effective MySQL之SQL语句最优化》希望能够通过一步步详细介绍SQL优化的方法,帮助...

    《高性能MySQL(第二版)》电子书下载(全本)

    全书包含14章和4个附录,内容覆盖MySQL系统架构、设计应用技巧、SQL语句优化、服务器性能调优、系统配置管理和安全设置、监控分析,以及复制、扩展和备份/还原等主题,每一章的内容自成体系,适合各领域技术人员作...

Global site tag (gtag.js) - Google Analytics