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

SQL 优化技巧

1 避免无计划的全表扫描
  如下情况进行全表扫描:
-          该表无索引
-          对返回的行无人和限制条件(无Where子句)
-          对于索引主列(索引的第一列)无限制条件
-          对索引主列的条件含在表达式中
-          对索引主列的限制条件是is (not) null或!=
-          对索引主列的限制条件是like操作且值是一个bind variable或%打头的值
2 只使用选择性索引
   索引的选择性是指索引列中不同值得数目和标志中记录数的比,选择性最好的是非空列的唯一索引为1.0。
复合索引中列的次序的问题:
  1 在限定条件里最频繁使用的列应该是主列
  2 最具有选择性的列(即最清晰的列)应该是主列
  如果1和2 不一致,可以考虑建立多个索引。
在复合索引和多个单个索引中作选择:
  考虑选择性 考虑读取索引的次数  考虑AND-EQUAL操作
3 管理多表连接(Nested Loops, Merge Joins和Hash Joins)  优化联接操作
  Merge Joins是集合操作  Nested Loops和Hash Joins是记录操作返回第一批记录迅速
Merge Joins的操作适用于批处理操作,巨大表 和远程查询
 1全表扫描  --〉 2排序   --〉3比较和合并  性能开销主要在前两步
  适用全表扫描的情形,都适用Merge Joins操作(比Nested Loops有效)。
  改善1的效率: 优化I/O, 提高使用ORACLE多块读的能力, 使用并行查询的选项
  改善1的效率:提高Sort_Area_Size的值, 使用Sort Direct Writes,为临时段提供专用表空间
4 管理包含视图的SQL语句
  优化器执行包含视图的SQL语句有两种方法:
-          先执行视图,完成全部的结果集,然后用其余的查询条件作过滤器执行查询
-          将视图文本集成到查询里去
含有group by子句的视图不能被集成到一个大的查询中去。
在视图中使用union,不阻止视图的SQL集成到查询的语法中去。
5 优化子查询
6 使用复合Keys/S


相关文档:

ORACLE SQL语句优化


1) 选择最有效率的表名顺序(只在基于规则的优化器中有效):
ORACLE的解析器按照从右到左的顺序处理from子句中的表名,from子句中写在最后的表(基础表 driving table)将被最先处理,在from子句中包含多个表的情况下,你必须选择记录条数最少的表作为基础表。如果有3个以上的表连接查询, 那就需要选择交叉表(intersection ......

SQL Server 2000中的触发器使用

可以定义一个无论何时用INSERT语句向表中插入数据时都会执行的触发器。
  当触发INSERT触发器时,新的数据行就会被插入到触发器表和inserted表中。inserted表是一个逻辑表,它包含了已经插入的数据行的一个副本。inserted表包含了INSERT语句中已记录的插入动作。inserted表还允许引用由初始化INSERT语句而产生的日志数据 ......

【SQL SERVER中一些特别地方的特别解法2】


/*----------------------------------------------------------------
-- Author  :feixianxxx(poofly)
-- Date    :2010-04-20 20:10:41
-- Version:
--      Microsoft SQL Server 2008 (SP1) -  ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号