-------------------------------------------------------------------------------sql规范-------------------------------------------------------------------------------------------
看到itpub的微信发的,搬运一下,应该不属于优化,属于基本的sql规范:
1.ORACLE解析器从右到左处理from子句中的表名,所以写在后面的表(基础表driving table)将会最先处理,选择记录条数最少的作为driving table;
2.表连接写在其他where条件之前,可以过滤掉最大数据记录的条件写在where字句末尾;
3.select字句中避免使用*;
4.设置ARRAYSIZE,增加每次数据库访问的检索数据量,建议为200
show arraysize;
set arraysize 200;
永久:可以该参数保存到glogin.sql 或者login.sql 文件里,这样可以永久生效,不必每次都去set 指定
5.使用decode函数减少处理时间
6.整合简单,无关联的数据库访问;
7.删除重复记录:
delete from emp a where a.rowid>(select min(x.rowid);
8.truncate 代替 delete;
9.一定要记得commit,多commit:
释放undo段用于恢复的数据信息
释放锁
释放redo log buffer空间
10.通过内部函数提高sql效率
11.使用表的别名
12.用 exists 代替in,not exists 代替not in;
13.擅于使用索引
14.sql语句大小写规范,用大写;
15.避免在索引上使用not和计算;
16.用>=代替>
17.索引列用union替换or:where字句中用union替换or,(坚持用or,将返回记录最少的索引列写在最前边)
18.避免使用耗费资源的操作:distinct,union,minus,intersect,order by
看到itpub的微信发的,搬运一下,应该不属于优化,属于基本的sql规范:
1.ORACLE解析器从右到左处理from子句中的表名,所以写在后面的表(基础表driving table)将会最先处理,选择记录条数最少的作为driving table;
2.表连接写在其他where条件之前,可以过滤掉最大数据记录的条件写在where字句末尾;
3.select字句中避免使用*;
4.设置ARRAYSIZE,增加每次数据库访问的检索数据量,建议为200
show arraysize;
set arraysize 200;
永久:可以该参数保存到glogin.sql 或者login.sql 文件里,这样可以永久生效,不必每次都去set 指定
5.使用decode函数减少处理时间
6.整合简单,无关联的数据库访问;
7.删除重复记录:
delete from emp a where a.rowid>(select min(x.rowid);
8.truncate 代替 delete;
9.一定要记得commit,多commit:
释放undo段用于恢复的数据信息
释放锁
释放redo log buffer空间
10.通过内部函数提高sql效率
11.使用表的别名
12.用 exists 代替in,not exists 代替not in;
13.擅于使用索引
14.sql语句大小写规范,用大写;
15.避免在索引上使用not和计算;
16.用>=代替>
17.索引列用union替换or:where字句中用union替换or,(坚持用or,将返回记录最少的索引列写在最前边)
18.避免使用耗费资源的操作:distinct,union,minus,intersect,order by
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/30289795/viewspace-2147049/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/30289795/viewspace-2147049/