Oracle数据库的优化毕业论文(2)
2013-08-12 01:03
导读:索引的选择性是指索引列里不同值的数目与表中记录数的比。如果表有1000个记录,表索引列有950个不同值,那么这个索引的选择性就是950/1000或者0.95。最
索引的选择性是指索引列里不同值的数目与表中记录数的比。如果表有1000个记录,表索引列有950个不同值,那么这个索引的选择性就是950/1000或者0.95。最好的可能性选择是1.0。依据非空值列的唯一索引,通常其选择性为1.0。
索引的选择性是指索引列里不同值的数目与表中记录数的比。如果表有1000个记录,表索引列有950个不同值,那么这个索引的选择性就是950/1000或者0.95。最好的可能性选择是1.0。依据非空值列的唯一索引,通常其选择性为1.0。
2.3管理多表联结
Oracle提供了3个联结操作:NESTED LOOPS、HASH JOIN和MERGE JOIN。MERGE JOIN是一组操作,在所有行被处理完之前,它不返任何记录给下一操作。NESTED LOOPS和HASH是行操作,因此会很快将第一批记录返回给下一个操作。
在每个联结选项里,必须执行一些步骤以获取最好的联结性能。如果没有适当地优化联结操作,那么联结所需的时间也许随着表的增长而呈指数级地增长。
2.4管理包含视图的SQL语句
如果查询包含视图,优化器有两种执行查询的方法:首先解决视图然后执行查询,或者把视图文本集成到查询里去。如果首先执行视图,那么首先完成全部的结果集,然后用其余的查询条件做过滤器。
首先解决视图会导致查询性能下降的问题,这取决于所涉及表的相对大小。如果视图被集成到查询里,那么查询的条件也可以应用于视图里,并且可以使用一个小一些的结果集。然而在一些情况下,也许可以通过视图分离组操作提高查询性能。
如果一个视图包含集合的操作(如Group by、SUM、COUNT或者DISTINCT),那么视图不能被集成到查询里去。
不使用组或者没有集合操作的视图的SQL语法可以被集成到大的查询里去。
2.5优化子查询
当使用自查询时,也许会碰到几个独特的问题。涉及子查询的查询潜在问题如