如何编写高效的SQL】的更多相关文章

编写高效的sql可以给用户带来好的体验,需要开发这没有意识到这一点因为他们不关心也不知道怎么做.高效的sql可以给用户节省很多时间,这样就不需要dba来找上门,也不需要搭建RCA和性能调优. 性能不好的SQL有需要原因,其中之一是:全表扫描 什么时候应该用全表扫描 并不是说用全表扫描的方法来从表中获取数据是糟糕的方式,优化器选择全表扫描的方式而不选择索引的方式基于以下几点: a)如果数据量特别大,使用索引的方式不一定会比全表扫描快: b)如果查询表中所有的行(没有where)则优化器会选择全表扫…
最近应团队要求,研究整理了下,mysql相关的优化,有些是根据实际java项目中碰到的情况经验之谈.欢迎讨论~ SQL 语言是一种强大而且灵活的语言,在使用 SQL 语言来执行某个关系查询的时候,用户可以写出很多不同的 SQL 语句来获取相同的结果.也就是说,语法不同的SQL语句,有可能在语义上是完全相同的.但是尽管这些 SQL 语句最后都能返回同样的查询结果,它们执行所需要的时间却有可能差别很大. 一.优化目标 减少 IO 次数 IO永远是数据库最容易产生瓶颈的地方,这是由数据库的职责所决定的…
编写高效 SQL 语句的最佳实践 秦玮, 高级软件工程师, IBM 王广成, 软件工程师, IBM 王韵婷, 高级软件工程师, IBM 简介: 本文列举了一些在编写 SQL 查询语句时可能导致 DB2 查询缓慢的常见问题,并相应的给出了编写高效 SQL 查询语句的几个最佳实践方法.对于那些需要访问 DB2 数据库的应用程序开发人员来说,具有一定的参考价值和借鉴意义. 发布日期: 2010 年 9 月 30 日 级别: 初级 访问情况 : 5834 次浏览 评论: 2 (查看 | 添加评论 - 登…
转至http://blog.csdn.net/u012150457/article/details/41846299 一.编写高效SQL语句 1) 选择最有效的表名顺序(仅适用于RBO模式) ORACLE的解析器总是按照从右到左的顺序处理FROM子句中的表名,因此FROM子句中最后的一个表将作为驱动表被优先处理.当FROM子句存在多个表的时候,应当考虑将表上记录最少的那个表置于FROM的最右端作为基表.Oracle会首先扫描基表(FROM子句中最后的那个表)并对记录进行排序,然后扫描第二个表(F…
编写高效 SQL 需要以下知识 有关所查询内容的物理组织的知识 数据库能做什么的知识, 例如: 如果你不知道跳跃扫描索引及其用途, 那么你可能会看着模式说”索引丢了” SQL 所有错综复杂的知识 对目标的真实理解-问题是什么 访问方法 全扫描, 各种类型的索引访问 通过散列 或 ROWIN 方式直接访问. 类似 3PL语言中的GOTO语句. 全扫描 全扫描是读取 ORACLE 的大量数据行的行之有效的方法, 因为数据库使用多块读取, 需要记住, 全扫描并不邪恶, 在很多情况下, 全扫描是获得结果…
转载:http://www.blogjava.net/ashutc/archive/2009/07/19/277215.html 1.选择最有效率的表明顺序(只在基于规则的优化器中有效) Oracle的解析器按照从右到左的顺序处理FROM 子句中的表名,FROM 子句中写在最后的表(基础表 driving table)将被最先处理,在FROM 子句中包含多个表的情况下,你必须选择记录条数最少的表作为基础表.假如有3 个以上的表连接查询,那就需要选择交叉表(intersection table)作…
最右边优先 css选择符是从右向左进行匹配的. 样式系统从最右边的选择符开始向左匹配规则.只要当前的选择符的左边还有其他选择符,样式系统就会继续向左移动,直到找到和匹配的元素,或者因为不匹配而退出. 编写高效选择符指南 避免使用通配规则 除了传统意义上的通配选择符之外,相邻兄弟选择符.子选择符.后代选择符和属性选择符都可以归纳为“通配规则”.推荐仅用ID.类和标签选择符. 不要限定ID选择符 在页面中一个指定的ID只能对应一个选择符,所以没有必要添加额外的限定符. 不要限定类选择符 不要用具体的…
编写高效.规范的js代码: 1.变量命名空间问题,尽量使用局部变量,防止命名冲突(污染作用域中的全局变量):全局空间命名的变量可以在对应的文档域任意位置中使用window调用. 2.尽量使用单var定义变量(作用域开始先申明并赋值变量,便于后边使用),使用var定义的变量只作用于对应的作用域中,如定义的全局变量作用于全局作用域,函数中定义的变量作用于该局部作用域中.未用var定义的变量相当于一个全局变量,在函数中出现的该类变量作用域全局域.(但是var定义的全局变量不能用delete删除,而未定…
编写高效的Android代码 毫无疑问,基于Android平台的设备一定是嵌入式设备.现代的手持设备不仅仅是一部电话那么简单,它还是一个小型的手持电脑,但是,即使是最快的最高端的手持设备也远远比不上一个中等性能的桌面机. 这就是为什么在编写Android程序时要时刻考虑执行的效率,这些系统不是想象中的那么快,并且你还要考虑它电池的续航能力.这就意味着没有多少剩余空间给你去浪费了,因此,在你写Android程序的时候,要尽可能的使你的代码优化而提高效率. 本页介绍了几种可以让开发者的Android…
C 语言中的指针和内存泄漏 http://www.ibm.com/developerworks/cn/aix/library/au-toughgame/ 本文讨论了几种在使用动态内存分配时可以避免的陷阱.要避免内存相关的问题,良好的实践是: 始终结合使用 memset 和 malloc,或始终使用 calloc. 每当向指针写入值时,都要确保对可用字节数和所写入的字节数进行交叉核对. 在对指针赋值前,要确保没有内存位置会变为孤立的. 每当释放结构化的元素(而该元素又包含指向动态分配的内存位置的指…