参考链接:http://www.jfox.info/SQL-you-hua.html

1.不能使用某列值为null的列,作为索引。

不能用null作索引,任何包含null值的列都将不会被包含在索引中。即使索引有多列这样的情况下,只要这些列中有一列含有null,该列就会从索引中排除。

2.选择最有效率的表名顺序(只在基于规则的优化器中有效):

Oralce 的解析器按照从右到左的顺序处理FROM子句中的表名,FROM子句中写在最后的表(基础表 driving table)将被最先处理,在FROM子句中包含多个表的情况下,你必须选择记录条数最少的表作为基础表。如果有3个以上的表连接查询, 那就需要选择交叉表(intersection table)作为基础表, 交叉表是指那个被其他表所引用的表.

3.WHERE子句中的连接顺序.:

Oralce 采用自下而上的顺序解析WHERE子句,根据这个原理,表之间的连接必须写在其他WHERE条件之前, 那些可以过滤掉最大数量记录的条件必须写在WHERE子句的末尾.

4. SELECT子句中避免使用 ‘ * ‘:

ORACLE在解析的过程中, 会将’*’ 依次转换成所有的列名, 这个工作是通过查询数据字典完成的, 这意味着将耗费更多的时间

5.用Where子句替换HAVING子句:

避免使用HAVING子句, HAVING 只会在检索出所有记录之后才对结果集进行过滤. 这个处理需要排序,总计等操作. 如果能通过WHERE子句限制记录的数目,那就能减少这方面的开销.

6.通过内部函数提高SQL效率.:

复杂的SQL往往牺牲了执行效率. 能够掌握上面的运用函数解决问题的方法在实际工作中是非常有意义的

7. 使用表的别名(Alias):

当在SQL语句中连接多个表时, 请使用表的别名并把别名前缀于每个Column上.这样一来,就可以减少解析的时间并减少那些由Column歧义引起的语法错误.

8.用EXISTS替代IN、用NOT EXISTS替代NOT IN:

在许多基于基础表的查询中,为了满足一个条件,往往需要对另一个表进行联接.在这种情况下, 使用EXISTS(或NOT EXISTS)通常将提高查询的效率. 在子查询中,NOT IN子句将执行一个内部的排序和合并. 无论在哪种情况下,NOT IN都是最低效的 (因为它对子查询中的表执行了一个全表遍历). 为了避免使用NOT IN ,我们可以把它改写成外连接(Outer Joins)或NOT EXISTS.

9. 用索引提高效率:

索引是表的一个概念部分,用来提高检索数据的效率,ORACLE使用了一个复杂的自平衡B-tree结构. 通常,通过索引查询数据比全表扫描要快.

10.用EXISTS替换DISTINCT:当提交一个包含一对多表信息(比如部门表和雇员表)的查询时,避免在SELECT子句中使用DISTINCT.

11.用UNION替换OR (适用于索引列) ,用IN来替换OR ,用UNION-ALL 替换UNION ( 如果有可能的话),用WHERE替代ORDER BY

12.sql语句用大写的;因为oracle总是先解析sql语句,把小写的字母转换成大写的再执行 ,在java代码中尽量少用连接符“+”连接字符串!,避免在索引列上使用NOT 通常,

mysql 优化设计库_数据库优化设计与SQL优化相关推荐

  1. 小米mysql安装教程_小米 SOAR 开源SQL优化工具安装

    github :https://github.com/xiaomi/soar 安装说明 :https://github.com/XiaoMi/soar/blob/master/doc/install. ...

  2. Mysql数据库高级、sql优化

    https://note.youdao.com/ynoteshare/index.html?id=53cd90b2a1d930e1f5c7558a3f595696&type=notebook& ...

  3. 一次DB2分页语句的优化,带你拨开分页SQL优化的外衣

    一次DB2分页语句的优化,带你拨开分页SQL优化的外衣 1 前言: 最近,项目中的一个 DB2分页查询很慢 ,组长将此分页的优化分派给了我:然后一顿优化(乱操作)后,将DB2分页查询耗时降到了比较满意 ...

  4. 字符串字段当条件查询的时候需要加引号吗_如此详细的SQL优化教程,是你需要的吗?...

    基础数据准备 二:五百万数据插入 上面插入几条测试数据,在使用索引时还需要插入更多的数据作为测试数据,下面就通过存储过程插入500W条数据作为测试数据 三:使用索引和不使用索引的比较 没有添加索引前一 ...

  5. sql 拼接int类型的字段_这才是SQL优化的正确姿势!

    文末扫海报二维码领[30份Excel可视化数据看板] 磊哥 | 作者 Java中文社群 | 来源 全文内容预览: 当然,本篇是关于性能优化的,那性能优化就应该一把梭子吗?还是要符合一些规范和原则呢? ...

  6. 数据库sql优化总结之5--数据库SQL优化大总结

    数据库SQL优化大总结 小编最近几天一直未出新技术点,是因为小编在忙着总结整理数据库的一些优化方案,特此奉上,优化总结较多,建议分段去消化,一口吃不成pang(胖)纸 一.百万级数据库优化方案 1.对 ...

  7. mysql advisor github_GitHub - zyw/sqladvisor-web: 美团SQLAdvisor SQL优化建议工具的Web版,告别命令行...

    sqladvisor-web 美团SQLAdvisor SQL优化建议工具的Web版,告别命令行. 项目中使用的美团SQL分析工具是在CentOS上编译的,所以建议部署到CentOS上. 该项目是使用 ...

  8. mysql事务并发控制_数据库 事务并发控制

    事务是一个逻辑工作单元, SQLServer 2005 提供了几种自动的可以通过编程来完成的机制,包括事务日志. SQL 事务控制语句,以及事务处理运行过程中通过锁定保证数据完整性的机制.当用户对数据 ...

  9. mysql sql 优化 博客园_Mysql的SQL优化指北

    概述 在一次和技术大佬的聊天中被问到,平时我是怎么做Mysql的优化的?在这个问题上我只回答出了几点,感觉回答的不够完美,所以我打算整理一次SQL的优化问题. 要知道怎么优化首先要知道一条SQL是怎么 ...

最新文章

  1. OKR的本质是什么?目标如何制定?
  2. 摘要: Nginx 网络多并发请求的TCP网络参数做简单说明。
  3. javaweb学习总结(二十四)——jsp传统标签开发
  4. NDK交叉编译及so库导入Android项目
  5. poj 3038 Children of the Candy Corn bfs dfs
  6. java setcharat,Java StringBuffer setCharAt()方法
  7. uml活动图 各个功能的操作流程和分支_UML学习系列教程08------九大基本图05---活动图(Activity Diagram)(重点理解和流程图的区别)...
  8. flask + react_再写一本 Flask 书
  9. Android知识点剖析系列:深入了解layout_weight属性
  10. 一个SAP开发人员的养蚕流水帐
  11. 你应当如何学习C++(以及编程)(rev#1)
  12. Linux笔记-压缩包安装jdk1.7(bash与.cshrc)
  13. seo提交工具_经验分享:SEO新手面对新网站应该如何去优化
  14. PLSQL设置字体大小
  15. Java开发工程师如何做好职业规划和成长路线
  16. 北京邮电大学计算机科学与技术专业研究生,北京邮电大学计算机科学与技术专业...
  17. 皮克定理(计算多边形面积)
  18. 知乎热门:找工作时单位普遍要求 35 岁以下,那 35 岁以上的人都干嘛去了?
  19. linux泰语语言包,linux安装中文语言包(示例代码)
  20. vmvare打开虚拟机时报错:vmx文件已损坏

热门文章

  1. Spark _01初识
  2. spring——使用xml声明式事务整合jdbc——GRUD
  3. leetcode 1306. Jump Game III | 1306. 跳跃游戏 III(BFS)
  4. leetcode 303. 区域和检索 - 数组不可变(Java版)
  5. Redis实战(三):Redis的List、Set、Hash、sorted_set、skip list
  6. 密码学系列之:memory-bound函数
  7. Java学习笔记十五
  8. Leet Code OJ 189. Rotate Array [Difficulty: Easy]
  9. JAVA确保垃圾回收后结束程序_Java垃圾回收机制(转)
  10. 安卓学习 之 碎片(四)