oracle sql 建议,Oracle提高sql执行效率的心得建议

Oracle提高sql执行效率的心得建议

复制代码 代码如下:

-->FROM子句中包含多个表的情况下,选择记录条数最少的表作为基础表

-->解析WHERE子句是自下而上的 过滤条件要有顺序

-->ORACLE会将'*'转换成列名

-->DELETE会在rollback segment中存放可恢复信息,可以试试TRUNCATE

-->COMMIT会释放:1.rollback segment

2.被程序语句获得的锁

3.redo log buffer

-->把Alias前缀于每个Column上可以减少解析的时间

-->ORACLE解析sql语句时会把小写的字母转换成大写的再执行

-->在索引列上使用NOT会停止使用索引转而执行全表扫描

-->在索引列上进行运算会停止使用索引转而执行全表扫描

-->使用'>=',而不是'>'

-->where子句中'!='、'||'、'+'等符号会破坏索引

-->IN的效率很低,IN子句将执行一个内部的排序和合并

-->EXIST查询更为迅速

-->对于两个索引列,UNION比OR效率更高

-->IS NULL会破坏索引

-->DISTINCT,UNION,MINUS,INTERSECT,ORDER BY等都带有SORT功能,会耗费资源

-->多个索引列时尽量使用第一个索引列

-->尽量用 UNION ALL代替UNION

-->不要用TO_NUMBER()之类的函数改变索引列的类型。

-->对于字符类型的索引列尽量写成:col = '123' 而不是 col = 123,后者会被解析为TO_NUMBER(EMP_TYPE)=123

-->适当的地方使用适当的关键字:HAVING会在检索出所有记录之后对结果集进行过滤 能使用WHERE解决时不要用HAVING

-->索引也需要维护,INSERT,DELETE,UPDATE会因索引而做出更多次I/O

-->重构索引是必要的:ALTER INDEX REBUILD [ONLINE]

时间: 2013-08-07

这些大都是与硬件相关.其实在软件上,好的程序设计的方法和正确的参数配置也可以提高程序的性能,有时 在同等情况下只要改变一个参数,程序执行效率就能大大提高.本文就试着在这方面做些探索. 一.影响性能的因素 ASP程序运行的性能主要决定于以下2个大方面: 1.HTML页面的执行效率 2.反应时间,其中反应时间主要受制于下面要素: (1).ASP页面的执行效率 (2).数据库因素 下面我们就来详细讨论一下. 二.详细讨论 1.影响HTML的因素 HTML页面的执行效率是一个纯客户端的问题.影响这个问题

一些小技巧1. 如何查出效率低的语句?在MySQL下,在启动参数中设置 --log-slow-queries=[文件名],就可以在指定的日志文件中记录执行时间超过long_query_time(缺省为10秒)的SQL语句.你也可以在启动配置文件中修改long query的时间,如: 复制代码 代码如下: # Set long query time to 8 seconds    long_query_time=8 2. 如何查询某表的索引?可使用SHOW INDEX语句,如: 复制代码 代码如下

根据mysql慢日志监控SQL语句执行效率 启用MySQL的log-slow-queries(慢查询记录). 在Linux环境下先要找到my.cnf文件(一般在/etc/mysql/),然后可能会发现该文件修改后无法保存,原因是你没有相应的权限,可以从属性中看到该文件的所有者是root,这时要先以root的身份打开它: sudo nautilus /etc/mysql 接着再打开my.cnf文件然后找到[mysqld]标签在下面加上: log-slow-queries=/path/slow.lo

昨天同事问了我一个问题,有两个循环语句: 复制代码 代码如下: for(i = n; i > 0; i--) { - } for(i = 0; i < n; i++) { - } 为什么前者比后者快? 我当时的解释是: i- -操作本身会影响CPSR(当前程序状态寄存器),CPSR常见的标志有N(结果为负), Z(结果为0),C(有进位),O(有溢出).i > 0,可以直接通过Z标志判断出来. i++操作也会影响CPSR(当前程序状态寄存器),但只影响O(有溢出)标志,这对于i <

如何提升JavaScript执行效率与性能在前端开发中位于一个很重要的地方,这节来研究下如何在平时做项目过程中,提升JavaScript性能与运行效率. 循环 循环是很常用的一个控制结构,大部分东西要依靠它来完成,在JavaScript中,我们可以使用for(;;),while(),for(in)三种循环,事实上,这三种循环中for(in)的效率极差,因为他需要查询散列键,只要可以就应该尽量少用.for(;;)和while循环的性能应该说基本(平时使用时)等价. 而事实上,如何使用这两个循环,则

就是把原来的数组中的数都"拆"成"单"位的. 下面是自己写的一个函数: 复制代码 代码如下: function splitStrToArray_mine($array) { $new_array = array(); foreach($array as $value) { $value = (string)$value; $len = strlen($value); for($i = 0; $i < $len; $i ++){ array_push($new_

1.用单引号代替双引号来包含字符串,这样做会更快一些.因为PHP会在双引号包围的字符串中搜寻变量, 单引号则不会,注意:只有echo能这么做,它是一种可以把多个字符串当作参数的"函数"(译注:PHP手册中说echo是语言结构,不是真正的函数,故 把函数加上了双引号). 2.如果能将类的方法定义成static,就尽量定义成static,它的速度会提升将近4倍. 3.$row['id'] 的速度是$row[id]的7倍. 4.echo 比 print 快,并且使用echo的多重参数(译注:

例子:我们要实现的效果是当用户点击鼠标的时候,就在旧数据上追加若干新数据. 如果使用标准DOM的话,完整代码如下: 复制代码 代码如下:

test

data

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值