我们要做到不但会写 还要做到写出性能优良的 以下为笔者学习、摘录、并汇总
部分资料与大家分享!
() 选择最有效率的表名顺序只在基于规则的优化器中有效:
的解析器按照从右到左的顺序处理 子句中的表名, 子句中写在
最后的表基础表 将被最先处理,在 子句中包含多个表的情况下
你必须选择记录条数最少的表作为基础表。如果有 个以上的表连接查询那就需要选择
交叉表作为基础表交叉表是指那个被其他表所引用的表
( ) !" 子句中的连接顺序.:
采用自下而上的顺序解析 !" 子句根据这个原理表之间的连接必须写在
其他 !" 条件之前那些可以过滤掉最大数量记录的条件必须写在 !" 子句的
末尾
() # 子句中避免使用 ‘ $%:
在解析的过程中会将&$&依次转换成所有的列名这个工作是通过查询数据字典
完成的这意味着将耗费更多的时间
(') 减少访问数据库的次数:
在内部执行了许多工作(解析 语句估算索引的利用率绑定变量 读数据
块等;
()) 在 $*+$, 和 *$ 中重新设置 -./ 参数可以增加每
次数据库访问的检索数据量 建议值为 00
(1) 使用 22 函数来减少处理时间:
使用 22 函数可以避免重复扫描相同记录或重复连接相同的表
(3) 整合简单无关联的数据库访问:
如果你有几个简单的数据库查询语句你可以把它们整合到一个查询中即使它们之间没有
关系
(4) 删除重复记录:
最高效的删除重复记录方法 因为使用了 !.2例子:
2#*!"!.25#.67!.28
*7!"7*96:*96;
(<) 用 #=6# 替代 2#:
当删除表中的记录时在通常情况下回滚段>,用来存放可以被恢复
的信息如果你没有 .# 事务 会将数据恢复到删除之前的状态准确地说
是恢复到执行删除命令之前的状况而当运用 #=6# 时回滚段不再存放任何可被
恢复的信息当命令运行后数据不能被恢复因此很少的资源被调用执行时间也会很短译
者按(#=6# 只在删除全表适用#=6# 是 22 不是 2
(0) 尽量多使用 .#:
只要有可能在程序中尽量多使用 .#这样程序的性能得到提高需求也会因为
.# 所释放的资源而减少(8
.# 所释放的资源(8
回滚段上用于恢复数据的信息8
被程序语句获得的锁
+?中的空间
为管理上述 种资源中的内部花费
() 用 !@ 子句替换 "A.6B 子句:
避免使用 "A.6B 子句"A.6B只会在检索出所有记录之后才对结果集进行过滤这