易截截图软件、单文件、免安装、纯绿色、仅160KB

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操作(判断字段是否为空)
    


相关文档:

碰上oracle字符集问题

前台UI进程(VC6编写)将UTF-8中文发给后台服务程序(Linux GCC),后台再写入oracle数据库,然后前台再通过后台将数据取出,并显示;后台没有做编解码转换,前台则在VC默认的GBK与UTF-8之间作转换。
开始时系统出现乱码,后来通过设置Linux一个环境变量、重启后台进程问题解决(问题是曾经尝试过更改该环境变量,但乱码依 ......

三种sql分页方法

表中主键必须为标识列,[ID] int IDENTITY (1,1)
1.分页方案一:(利用Not In和SELECT TOP分页)
语句形式: 
SELECT TOP 页记录数量 *
from 表名
WHERE (ID NOT IN
  (SELECT TOP (每页行数*(页数-1)) ID
  from 表名
  ORDER BY ID))
  ORDER BY ID
//自己还可以加上一些查询 ......

防止SQL注入

最近看到很多人的网站都被注入js,被iframe之类的。非常多。
本人曾接手过一个比较大的网站,被人家入侵了,要我收拾残局。。
1.首先我会检查一下服务器配置,重新配置一次服务器安全,可以参考
http://hi.baidu.com/zzxap/blog/item/18180000ff921516738b6564.html
2.其次,用麦咖啡自定义策略,即使网站程序有漏洞 ......

让powerdesigner生成的sql在mysql下正确运行

如果按照powerdesigner的默认选项,生成的sql不能在mysql中正确运行.]
经过本人研究发现要做如下修改:
  1.aftercreate选项改为
.foreach_item(OutReferences)
   .ifnot (%hasFKIndex%)
/*==============================================================*/
/* Index: ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号