Oracle SQL 优化
Oracle
SQL
的优化规
则:
尽量少用IN操作符,基本上所有的IN操作符都可以用EXISTS代替
用IN写出来的SQL
的优点是比较容易写及清晰易懂,但是用IN的SQL
性能总是比较低的,从ORACLE
执
行的步骤来分析用IN的SQL
与不用IN的SQL
有
以下区别:
ORACLE
试图将其转换成多个表的连接,如果转换不成功则先执行IN里面的子查询,再查询外层的表记录,如果转换成功则直接采用多个表的连接方式查询。由此可见用
IN的SQL
至少多了一个转换的过程。一般的SQL
都
可以转换成功,但对于含有分组统计等方面的SQL
就不能转换了。
Oracle
在执行IN子查询时,首先执行子查询,将查询结果放入
临时表再执行主查询。而EXIST则是首先检查主查询,然后运行子查询直到找到第一个匹配项。NOT EXISTS比NOT
IN效率稍高。但具体在选择IN或EXIST操作时,要根据主子表数据量大小来具体考虑。
推荐方案:在业务密集的SQL
当中尽量不采用IN操作符。
不用NOT IN操作符,可以用NOT EXISTS或者外连接+替代
此操作是强列推荐不使用的,因为它不能应用表的索引。
推荐方案:用NOT EXISTS 或(外连接+判断为空)方案代替
不用“<>”或者“!=”操作符。对不等于操作符的处理会造成全表扫描,可以用“<” or “>”代替
不等于操作符是永远不会用到索引的,因此对它的处理只会产生全表扫描。
推荐方案:用其它相同功能的操作运算代替,如:
1)a<>0 改为 a>0 or a<0
2)a<>’’ 改为 a>’’
Where子句中出现IS NULL或者IS NOT NULL时,Oracle
会
停止使用索引而执行全表扫描。可以考虑在设计表时,对索引列设置为NOT NULL。这样就可以用其他操作来取代判断NULL的操作
IS NULL 或IS NOT NULL操作(判断字段是否为空)
 
相关文档:
甲骨文已经完成了对SUN公司的收购,于1月27日发布了对Sun各项业务的整合规划。总体上说,Oracle要成为软硬件一体化的整体解决方案的厂商。 以下就其对备受关注的Java方面的策略做个介绍。
Java SE:
1)推出JDK SE 7, 它将包括多个新的功能,如提高开发人员的效率,提供高性能,对多核芯片的支持等。
2)Sun的HotSpot ......
最近看到很多人的网站都被注入js,被iframe之类的。非常多。
本人曾接手过一个比较大的网站,被人家入侵了,要我收拾残局。。
1.首先我会检查一下服务器配置,重新配置一次服务器安全,可以参考
http://hi.baidu.com/zzxap/blog/item/18180000ff921516738b6564.html
2.其次,用麦咖啡自定义策略,即使网站程序有漏洞 ......
create database test --建立test数据库
use test
create table BONUS --建立
(
ENAME NVARCHAR(10),
JOB NVARCHAR(9),
SAL FLOAT,
COMM FLOAT
)
create table DEPT --建立部门表
(
DEPTNO SMALLINT not null, --部门编号
DNAME NVARCHAR(14), --部门名
LOC NVARC ......
SQL Server 2005(适用于2000)的卸载是一个非常头疼的问题。我曾经尝试过直接使用【添加或删除程序】工具卸载、清除安装目录、删除注册表内容等等各种方式综合卸载,勉强成功。现在终于找到了一个事半功倍的方法,多次尝试,未有失败,具体如下:
1.下载卸载工具,有两种:
第一种是微软官方提供的工具(msicuu2.exe)
http ......
CREATE proc page
@RecordCount int output,
@QueryStr nvarchar(100)='table1',--表名、视图名、查询语句
@PageSize int=20, --每页的大小(行数)
@PageCurrent int=2, --要显示的页 从0开始
@FdShow nvarchar (1000)='*', --要显示的字段列表
@IdentityStr nvarchar (100)='id', --主键
@WhereStr nvarchar ......